curl - rozwiązanie wydaje się nic nie robić

35

Dane --helpwyjściowe dla curl zawiera listę --resolveopcji określających stan

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

Ale nie mam szczęścia, żeby to zadziałało. Podstawowe polecenie, które próbuję uruchomić, to

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

i ciągle otrzymuję odpowiedź Couldn't resolve host 'foo.example.com'. Chcę to zrobić, ponieważ testuję certyfikat dla witryny foo.example.com, ale nie testuję go na rzeczywistym serwerze. Zamiast tego testuję to na atrapie maszyny. Wiem, że mogę edytować, /etc/hostsdzięki czemu foo.example.com rozwiązuje problem na localhost, ale takie podejście do zwijania wydaje się być „poprawną” drogą, jeśli mógłbym to zrobić.

Czy ktoś widzi, co robię źle tutaj?

Tsuraan
źródło

Odpowiedzi:

58

Wygląda na to, że addressmusi to być numeryczny adres IP, a nie nazwa hosta.

Spróbuj tego:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
Keith Thompson
źródło
Ma to sens, ponieważ w świecie DNS resolveoznacza „uzyskaj adres IP z nazwy”.
ogromnie superiorman
4

Dodatkowa pomoc w rozwiązywaniu problemów:

Upewnij się, że nasłuchujesz odpowiedniego portu dla protokołu: http = 80; https = 443 i itp

Również curl -v poda HEADER informacje dla serwera odpowiedzi, które mogą być pomocne.

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>

Zasadniczo w tym przypadku metoda HTTP OPCJE nie została zaimplementowana na serwerze brzegowym dla CDN.

Manchego
źródło