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?

tsuraan
la source

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/
Keith Thompson
la source
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.

Manchego
la source