我能夠連接到以下 https://registry.terraform.io/.well-known/terraform.json 使用瀏覽器
當我嘗試從命令列連接到它時
捲曲:(7)無法連接到registry.terraform.io連接埠443:逾時
關於如何解決它的任何想法謝謝
答案1
問題是命令視窗上的代理設定不正確 HTTPS_PROXY=來自瀏覽器的代理設定
答案2
長話短說
嘗試curl
下面步驟 7 中列出的命令curl
。
使用 cURL 複製瀏覽器請求
如果您可以連接瀏覽器,消除curl
命令潛在問題的一種方法是從瀏覽器「複製」所需的交易。 Chrome、Firefox 和 Opera 都有一個允許這樣做的開發者控制台。
打開一個新的空白選項卡。
在 Chrome 和 Firefox 中,按 開啟F12開發者控制台。在 Opera 中,按Ctrl+ Shift+ I。
尋找該
Network
選項並選擇它。導覽至您想要的 URL,例如https://registry.terraform.io/.well-known/terraform.json。
您最終應該會看到類似於以下的內容:
前任。網路交易
選擇所需的交易,右鍵單擊並選擇選項
Copy as cURL
(對於 Chrome,使用Copy as cURL (cmd)
)。前任。複製為 cURL
如果您貼上剪貼簿的內容,您應該擁有以下請求的精確副本
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
標誌,並使用-D -
, 轉儲 HTTP 標頭以curl
幫助排除故障。
模擬特定瀏覽器
根據您的附加評論,您的(通用)cURL 請求仍然失敗,您可能需要模擬可以成功連接的特定瀏覽器。
瀏覽器透過以下方式來識別自己使用者代理與該瀏覽器的給定版本關聯的字串。如果您想模擬可以連接到您的 URL 的瀏覽器,您需要:
使用我在下面給出的步驟使用 cURL 複製瀏覽器請求在瀏覽器中可以連線成功。
嘗試將
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"
特定的用戶代理(例如來自“我的瀏覽器是什麼”)
-H "user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"
值得注意的是,第一種方法(複製請求)可能是最可靠的,因為它可能會捕獲除user-agent
用於授權請求的標頭之外的標頭。