web-dev-qa-db-fra.com

curl --resolve semble ne rien faire

Le --help sortie pour curl liste un --resolve option, qui indique

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

Mais je n'ai pas de 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 reçois toujours la réponse Couldn't resolve Host 'foo.example.com'. Je veux le faire parce que je teste un certificat pour foo.example.com, mais je ne le teste pas sur le serveur réel. Au lieu de cela, je le teste sur une machine factice. Je sais que je peux modifier /etc/hosts pour que foo.example.com se résout en localhost, mais cette approche curl semble être la façon "correcte" de procéder, si je pouvais le faire fonctionner.

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

37
tsuraan

Il semble que address doive ê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/
61
Keith Thompson

Une aide supplémentaire dans le dépannage:

Assurez-vous de répertorier le bon port pour le protocole: http = 80; https = 443 & etc.

Aussi curl -v fournira les informations HEADER pour le serveur de réponse qui peuvent être utiles.

$ 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>

Fondamentalement, dans ce cas, le OPTIONS HTTP la méthode n'a pas été implémentée sur le serveur Edge pour le CDN.

6
Manchego