curl --resolve scheint nichts zu tun

35

Die --helpAusgabe für Curl listet eine --resolveOption auf, die besagt, dass

--resolve <host:port:address> Force resolve of HOST:PORT to ADDRESS

Ich habe jedoch kein Glück, dass es funktioniert. Der grundlegende Befehl, den ich ausführen möchte, ist

curl --resolve foo.example.com:443:localhost https://foo.example.com:443/

und ich bekomme immer die Antwort Couldn't resolve host 'foo.example.com'. Ich möchte dies tun, weil ich ein Zertifikat für foo.example.com teste, es aber nicht auf dem tatsächlichen Server teste. Stattdessen teste ich es auf einem Dummy-Computer. Ich weiß, dass ich bearbeiten kann, /etc/hostsso dass foo.example.com zu localhost aufgelöst wird, aber dieser Curl-Ansatz scheint der "richtige" Weg zu sein, wenn ich ihn zum Laufen bringen könnte.

Weiß jemand, was ich hier falsch mache?

Tsuraan
quelle

Antworten:

58

Anscheinend addressmuss es sich um eine numerische IP-Adresse handeln, nicht um einen Hostnamen.

Versuche dies:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
Keith Thompson
quelle
Dies ist sinnvoll, weil in der DNS-Welt resolve"eine IP-Adresse von einem Namen erhalten" bedeutet.
Sehr überlegen
4

Einige zusätzliche Hilfe bei der Fehlerbehebung:

Stellen Sie sicher, dass Sie den richtigen Port für das Protokoll überwachen: http = 80; https = 443 & etc

Auch curl -v gibt die HEADER-Informationen für den Antwortserver an, die hilfreich sein können.

curl -v --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
## The client request headers prepended by >
> OPTIONS /v1/..
> HOSTS foo.example.com
## The server response prepended by <
< HTTP/1.1 501 Not Implemented
## The html returned
<H1>Unsupported Request</H1>

Grundsätzlich wurde in diesem Fall die HTTP-Methode OPTIONS auf dem Edgeserver für das CDN nicht implementiert.

Manchego
quelle