私は 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.com
127.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