curl --resolve parece no hacer nada

35

La --helpsalida para curl enumera una --resolveopción, que establece

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

Sin embargo, no tengo suerte para que funcione. El comando básico que estoy tratando de ejecutar es

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

y sigo recibiendo la respuesta Couldn't resolve host 'foo.example.com'. Quiero hacer esto porque estoy probando un certificado para foo.example.com, pero no lo estoy probando en el servidor real. En cambio, lo estoy probando en una máquina ficticia. Sé que puedo editar /etc/hostspara que foo.example.com se resuelva en localhost, pero este enfoque curl parece que sería el camino "correcto", si pudiera hacerlo funcionar.

¿Alguien ve lo que estoy haciendo mal aquí?

tsuraan
fuente

Respuestas:

58

Parece que addressdebe ser una dirección IP numérica, no un nombre de host.

Prueba esto:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
Keith Thompson
fuente
Esto tiene sentido porque en el mundo DNS, resolvesignifica "obtener una dirección IP de un nombre".
vastlysuperiorman
4

Alguna ayuda adicional en la resolución de problemas:

Asegúrese de estar escuchando el puerto correcto para el protocolo: http = 80; https = 443 y etc.

También curl -v le dará al HEADER información para el servidor de respuesta que puede ser útil.

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>

Básicamente, en este caso, el método OPTIONS HTTP no se implementó en el servidor perimetral para el CDN.

Manchego
fuente