Ich kann mich mit Folgendem verbinden https://registry.terraform.io/.well-known/terraform.json über einen Browser
Wenn ich versuche, über die Befehlszeile eine Verbindung herzustellen
curl: (7) Verbindung zum Port 443 von registry.terraform.io konnte nicht hergestellt werden: Zeitüberschreitung
Irgendwelche Ideen zur Lösung des Problems? Danke
Antwort1
Das Problem lag bei falschen Proxy-Einstellungen im Befehlsfenster HTTPS_PROXY = Proxy-Einstellungen vom Browser
Antwort2
Kurz zusammengefasst
Versuchen Sie es mit dem curl
unten in Schritt 7 aufgeführten Befehl. Wenn das nicht funktioniert, liegt wahrscheinlich neben Ihrem curl
Befehl ein anderes Problem vor (z. B. eine Firewall oder ein Proxy).
Kopieren von Browseranfragen mit cURL
Wenn Sie eine Verbindung über einen Browser herstellen können, können Sie mögliche Probleme mit Ihrem curl
Befehl vermeiden, indem Sie die gewünschte Transaktion aus Ihrem Browser „kopieren“. Chrome, Firefox und Opera verfügen alle über eine Entwicklerkonsole, die dies ermöglicht.
Öffnen Sie eine neue leere Registerkarte.
Drücken Sie in Chrome und Firefox, F12um die Entwicklerkonsole zu öffnen. Drücken Sie in Opera Ctrl+ Shift+ I.
Suchen Sie nach der
Network
Option und wählen Sie sie aus.Navigieren Sie zu Ihrer gewünschten URL, z. B.https://registry.terraform.io/.well-known/terraform.json.
Sie sollten am Ende etwa Folgendes sehen:
Beispiel: Netzwerktransaktionen
Wählen Sie die gewünschte Transaktion aus, klicken Sie mit der rechten Maustaste und wählen Sie die Option
Copy as cURL
(verwenden Sie für ChromeCopy as cURL (cmd)
).Beispiel: Als cURL kopieren
Wenn Sie den Inhalt der Zwischenablage einfügen, sollten Sie eine exakte Kopie der Anfrage für Folgendes erhalten
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
Dieser curl
Befehl sollte die Anfrage des Browsers exakt wiedergeben.
Andere Probleme
Vorausgesetzt, dass sich das Problem dadurch nicht lösen lässt, müssen Sie nach anderen Gründen suchen, warum diese Anforderung fehlschlagen könnte, z. B. Firewall-/Proxy-Probleme oder Zertifikatsprobleme.
Verwenden Sie die Option
-k
oder--insecure
, um selbstsignierte oder ungültige Zertifikate mit curl zu ignorieren.Erwägen Sie die Verwendung des
--verbose
Flags sowie das Dumping von HTTP-Headern mit , mit-D -
,curl
um die Fehlerbehebung zu erleichtern.
Emulieren eines bestimmten Browsers
Aufgrund Ihres zusätzlichen Kommentars, dass Ihre (generischen) cURL-Anfragen immer noch fehlschlagen, müssen Sie wahrscheinlich den spezifischen Browser emulieren, der eine erfolgreiche Verbindung herstellen kann.
Browser identifizieren sich mit einemUser-AgentZeichenfolge, die einer bestimmten Version dieses Browsers zugeordnet ist. Wenn Sie den Browser emulieren möchten, der eine Verbindung zu Ihrer URL herstellen kann, müssen Sie Folgendes tun:
Befolgen Sie die nachstehenden Schritte.Kopieren von Browseranfragen mit cURLim Browser, der erfolgreich eine Verbindung herstellen kann.
Versuchen Sie, den
user-agent
Wert in Schritt 7 durch den Wert zu ersetzen, der von einer Site wie zurückgegeben wirdWas ist mein Browser?(Besuchen Sie diesen Link in dem Browser, der problemlos auf Ihren Link zugreifen kann.)
Beispiel (Option 2)
„Generischer“ Benutzeragent (oben)
-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"
Bestimmter User Agent (z. B. von „What Is My Browser“)
-H "user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"
Es ist wichtig zu beachten, dass die erste Methode (Kopieren der Anfrage) wahrscheinlich die zuverlässigste ist, da sie möglicherweise andere Header abfängt als die, user-agent
die zum Autorisieren einer Anfrage verwendet werden.