curl --resolve sembra non fare nulla


35

L' --helpoutput per arricciatura elenca --resolveun'opzione, che indica

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

Tuttavia, non ho avuto fortuna a farlo funzionare. Il comando di base che sto cercando di eseguire è

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

e continuo a ricevere la risposta Couldn't resolve host 'foo.example.com'. Voglio farlo perché sto testando un certificato per foo.example.com, ma non lo sto testando sul server effettivo. Invece, lo sto testando su una macchina fittizia. So che posso modificare in /etc/hostsmodo che foo.example.com si risolva in localhost, ma questo approccio a ricciolo sembra che sarebbe il modo "corretto" di andare, se potessi farlo funzionare.

Qualcuno vede cosa sto facendo di sbagliato qui?

Risposte:


58

Sembra che addressdebba essere un indirizzo IP numerico, non un nome host.

Prova questo:

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

Questo ha senso perché nel mondo DNS resolvesignifica "ottenere un indirizzo IP da un nome".
vastlysuperiorman,

4

Qualche ulteriore aiuto nella risoluzione dei problemi:

Assicurati di ascoltare la porta giusta per il protocollo: http = 80; https = 443 e ecc

Inoltre curl -v fornirà le informazioni HEADER per il server di risposta che possono essere utili.

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>

Fondamentalmente in questo caso il metodo HTTP OPTIONS non è stato implementato sul server perimetrale per la rete CDN.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.