--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 HTTP
CDNのエッジサーバーはその方法を実装しません。
答え3
私も同じ問題があります。奇妙ですが、バージョンによって異なるようです。あるサーバーcurl --manual | grep resolve
にバージョン7.19.7があることを確認しましたが、--resolve
パラメーターがありません。バージョン7.29.0にはこのパラメーターがあり、構文解析は正しく機能します。