curl - вирішення, здається, нічого не робить


35

У --helpвисновку для curl перелічено --resolveпараметр, який констатує

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

Мені не пощастило змусити його працювати. Основна команда, яку я намагаюся виконати, - це

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

і я продовжую отримувати відповідь Couldn't resolve host 'foo.example.com'. Я хочу зробити це, тому що я тестую сертифікат на foo.example.com, але я не тестую його на фактичному сервері. Натомість я тестую його на манекені. Я знаю, що я можу редагувати /etc/hostsтак, щоб foo.example.com вирішив до localhost, але такий підхід до завивки здається, що це був би "правильний" шлях, якби я міг змусити його працювати.

Хтось бачить, що я тут роблю неправильно?

Відповіді:


58

Виявляється, що addressповинна бути числова IP-адреса, а не ім'я хоста.

Спробуйте це:

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

Це має сенс, оскільки в світі DNS resolveозначає "отримати IP-адресу від імені".
надзвичайно суперіорман

4

Деякі додаткові довідки щодо усунення несправностей:

Переконайтеся, що ви слухаєте правильний порт для протоколу: http = 80; https = 443 та ін

Також curl -v дасть інформацію про HEADER для сервера відповідей, яка може бути корисною.

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>

В основному в цьому випадку метод OPTIONS HTTP не був реалізований на крайовому сервері для CDN.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.