コマンドラインからサイトに接続する際に問題が発生する

コマンドラインからサイトに接続する際に問題が発生する

以下に接続できます https://registry.terraform.io/.well-known/terraform.json ブラウザを使用する

コマンドラインから接続しようとすると

curl: (7) registry.terraform.io ポート 443 への接続に失敗しました: タイムアウトしました

解決方法について何かアイデアがあれば教えてください

答え1

問題は、コマンド ウィンドウのプロキシ設定が正しくないことです。HTTPS_PROXY = ブラウザからのプロキシ設定

答え2

要約

手順 7 で以下にリストされているコマンドを試してくださいcurl。それでも問題が解決しない場合は、curlコマンド以外の問題 (ファイアウォールやプロキシなど) が発生している可能性があります。

cURL でブラウザ リクエストをコピーする

ブラウザで接続できる場合、curlコマンドに関する潜在的な問題を排除する 1 つの方法は、ブラウザから目的のトランザクションを「コピー」することです。Chrome、Firefox、Opera にはすべて、これを可能にする開発者コンソールがあります。

  1. 新しい空白のタブを開きます。

  2. Chrome と Firefox では、 を押してF12開発者コンソールを開きます。Opera では、Ctrl+ Shift+を押しますI

  3. オプションを探しNetworkて選択します。

  4. 希望するURLに移動します。例:https://registry.terraform.io/.well-known/terraform.json

  5. 最終的には次のようなものが表示されるはずです。

    例: ネットワークトランザクション

    Firefox 開発者コンソール - ネットワーク トランザクション - スクリーンショット

  6. 目的の取引を選択し、右クリックしてオプションを選択しますCopy as cURL(Chrome の場合は を使用しますCopy as cURL (cmd))。

    例: cURLとしてコピー

    Firefox 開発者コンソール - ネットワーク トランザクション - cURL としてコピー - スクリーンショット

  7. クリップボードの内容を貼り付けると、次のリクエストの正確なコピーが作成されますcurl:

    curl "https://registry.terraform.io/.well-known/terraform.json" -H "authority: registry.terraform.io" -H "upgrade-insecure-requests: 1" -H "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" -H "sec-fetch-mode: navigate" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "sec-fetch-site: none" -H "accept-encoding: gzip, deflate, br" -H "accept-language: en-US,en;q=0.9" --compressed
    

このcurlコマンドは、ブラウザによって行われたリクエストを正確に複製する必要があります。

その他の問題

これで問題が解決しない場合は、ファイアウォール/プロキシの問題や証明書の問題など、このリクエストが失敗する他の理由を調べる必要があります。

  • -kまたはオプションを使用して--insecure、curl で自己署名証明書または無効な証明書を無視します。

  • トラブルシューティングを支援するために、フラグの使用--verboseと、 を使用した HTTP ヘッダーのダンプを検討してください。-D -curl


特定のブラウザをエミュレートする

(一般的な) cURL リクエストがまだ失敗しているという追加コメントに基づくと、正常に接続できる特定のブラウザをエミュレートする必要がある可能性があります。

ブラウザは、ユーザーエージェントブラウザの特定のバージョンに関連付けられた文字列。URL に接続できるブラウザをエミュレートする場合は、次のいずれかを行う必要があります。

  1. 以下の手順に従ってくださいcURL でブラウザ リクエストをコピーするブラウザで正常に接続できます。

  2. user-agentステップ7の値を、次のようなサイトから返された値に置き換えてみてください。私のブラウザとは(リンクに問題なくアクセスできるブラウザでこのリンクにアクセスしてください)。

例(オプション2)

「汎用」ユーザーエージェント(上記)

-H "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"

特定のユーザーエージェント(例:What Is My Browser から)

-H "user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"

user-agent最初の方法 (リクエストのコピー)は、リクエストの承認に使用される以外のヘッダーをキャッチする可能性があるため、おそらく最も信頼性が高いことに注意することが重要です。


関連情報