ローカル仮想ホストを使用するように cURL を設定する 質問する

ローカル仮想ホストを使用するように cURL を設定する 質問する

私は Apache または Ngnix を使用して、実際のプロジェクトに基づいて開発サイトを常に作成します。http://project1.locこのようなサイトをファイルに追加した後.hosts、ブラウザーで問題なく使用できるようになります。

ただし、同じ URL に cURL リクエスト ( ) を送信しようとすると、http://project1.loc/post.jsonタイムアウト以外の何も返されません。cURL はカスタム ホストを考慮せず、情報を取得するためにネーム サーバーに直接アクセスすると想定しています。

これをどうすれば修正できますか?

アップデートカスタムヘッダー「HOST:http://project1.loc「そして今、400 エラーが発生しています - ただし、これは瞬時に発生するため、cURL は少なくとも hosts ファイルを使用していると想定しています...」

ベストアンサー1

実際、curl にはこれを明示的に行うオプションがあります。--resolve

の代わりにcurl -H 'Host: yada.com' http://127.0.0.1/something

使用curl --resolve 'yada.com:80:127.0.0.1' http://yada.com/something

違いは何ですか?と聞かれるかもしれません。

特に、これは HTTPS で機能します。ローカル サーバーに の証明書があると仮定すると、証明書がURL のホスト名と一致しないyada.comため、上記の最初の例は失敗します。yada.com127.0.0.1

2 番目の例は HTTPS で正しく動作します。

本質的には、経由で「Host」ヘッダーを渡すと、-Hホストがヘッダー セットにハッキングされますが、curl のホスト固有のインテリジェンスはすべてバイパスされます。 を使用すると、--resolve適用される通常のロジックがすべて活用されますが、DNS ルックアップがコマンド ライン オプションでデータを返したと仮定するだけです。期待どおりに動作します/etc/hosts

注:--resolveポート番号が必要です。HTTPSの場合は、

curl --resolve 'yada.com:443:127.0.0.1' https://yada.com/something

おすすめ記事