curl --resolve semble ne rien faire


35

Le --helprésultat de curl répertorie une --resolveoption qui indique

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

Cependant, je n'ai aucune chance de le faire fonctionner. La commande de base que j'essaie d'exécuter est

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

et je continue à recevoir la réponse Couldn't resolve host 'foo.example.com'. Je veux le faire car je teste un certificat pour foo.example.com, mais je ne le teste pas sur le serveur actuel. Au lieu de cela, je le teste sur une machine factice. Je sais que je peux éditer /etc/hostspour que foo.example.com soit résolu en localhost, mais cette approche curl semble être la solution "correcte", si je pouvais le faire fonctionner.

Est-ce que quelqu'un voit ce que je fais mal ici?

Réponses:


58

Il semble que le addressdoit être une adresse IP numérique, pas un nom d’hôte.

Essaye ça:

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

Cela a du sens car dans le monde du DNS, resolvesignifie "obtenir une adresse IP d'un nom".
vastlysuperiorman

4

Une aide supplémentaire pour le dépannage:

Assurez-vous d’écouter le bon port pour le protocole: http = 80; https = 443 & etc

Aussi curl -v donnera les informations HEADER pour le serveur de réponse, ce qui peut être utile.

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>

Dans ce cas, la méthode HTTP OPTIONS n’a pas été implémentée sur le serveur de périphérie pour le CDN.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.