カール --resolve は何もしないようです

カール --resolve は何もしないようです

--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の証明書をテストしているので、これをしたいのですが、実際のサーバーではテストしません。代わりに、仮想マシンでテストしています。 foo.example.comがlocalhostで検証されるように編集できることを知っていますが、うまくいくとしたら、/etc/hostsこのカール方法が「正しい」方法のようです。

私がここで何を間違っているのか知っている人はいますか?

答え1

addressホスト名ではなく数値IPアドレスである必要があるようです。

この試み:

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

答え2

トラブルシューティングに関する追加のヒント:

正しいプロトコルポートがリストされていることを確認してください(http = 80;など)。

curl -v応答サーバーのヘッダー情報も提供されるため、役に立ちます。

$ 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 HTTPCDNのエッジサーバーはその方法を実装しません。

答え3

私も同じ問題があります。奇妙ですが、バージョンによって異なるようです。あるサーバーcurl --manual | grep resolveにバージョン7.19.7があることを確認しましたが、--resolveパラメーターがありません。バージョン7.29.0にはこのパラメーターがあり、構文解析は正しく機能します。

関連情報