curl --resolve parece não fazer nada


35

A --helpsaída para curl lista uma --resolveopção que declara

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

Não estou tendo sorte em fazê-lo funcionar. O comando básico que estou tentando executar é

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

e continuo recebendo a resposta Couldn't resolve host 'foo.example.com'. Quero fazer isso porque estou testando um certificado para foo.example.com, mas não estou testando no servidor real. Em vez disso, estou testando-o em uma máquina fictícia. Eu sei que posso editar /etc/hostspara que foo.example.com resolva para localhost, mas essa abordagem de ondulação parece ser o caminho "correto" a ser seguido, se eu puder fazê-lo funcionar.

Alguém vê o que estou fazendo de errado aqui?

Respostas:


58

Parece que addressprecisa ser um endereço IP numérico, não um nome de host.

Tente o seguinte:

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

Isso faz sentido, porque no mundo do DNS resolvesignifica "obter um endereço IP de um nome".
vastlysuperiorman

4

Alguma ajuda adicional na solução de problemas:

Verifique se você está ouvindo a porta correta para o protocolo: http = 80; https = 443 e etc.

Também curl -v fornecerá ao HEADER informações para o servidor de resposta que podem ser úteis.

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>

Basicamente, nesse caso, o método HTTP OPTIONS não foi implementado no servidor de borda da CDN.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.