curl --resolveは何もしないように見える


35

--helpcurl の出力には、--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/hostsfoo.example.comがlocalhostに解決されるように編集できることは知っていますが、このcurlアプローチは、それを機能させることができれば「正しい」方法のように思えます。

ここで私が間違っていることを誰かが見ていますか?

回答:


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のエッジサーバーに実装されていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.