curl --resolve, кажется, ничего не делает

35

--helpВыход для завитка перечисляется --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, но этот подход curl выглядит так, как будто это был бы «правильный» путь, если бы я мог заставить его работать.

Кто-нибудь видит, что я здесь делаю не так?

tsuraan
источник

Ответы:

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>

По сути, в этом случае HTTP-метод OPTIONS не был реализован на пограничном сервере для CDN.

Манчего
источник