cURL を使用して CORS リクエストをデバッグするにはどうすればよいですか? これまでのところ、プリフライト リクエストを「シミュレート」する方法が見つかりませんでした。
5 に答える
curl を使用して CORS リクエストをデバッグする方法は次のとおりです。
cUrl を使用して通常の CORS リクエストを送信する:
curl -H "Origin: http://example.com" --verbose \
https://www.googleapis.com/discovery/v1/apis?fields=
-H "Origin: http://example.com"
フラグは、リクエストを行っているサード パーティのドメインです。あなたのドメインが何であれ代用してください。
フラグは--verbose
応答全体を出力するため、要求ヘッダーと応答ヘッダーを確認できます。
上記で使用している URL は、CORS をサポートする Google API へのサンプル リクエストですが、テストしている任意の URL に置き換えることができます。
応答にはAccess-Control-Allow-Origin
ヘッダーが含まれている必要があります。
cUrl を使用してプリフライト リクエストを送信する:
curl -H "Origin: http://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: X-Requested-With" \
-X OPTIONS --verbose \
https://www.googleapis.com/discovery/v1/apis?fields=
これは通常の CORS リクエストに似ていますが、いくつか追加されています。
-H
フラグは追加のプリフライト リクエスト ヘッダーをサーバーに送信します
-X OPTIONS
フラグは、これが HTTP OPTIONS 要求であることを示します。
プリフライト リクエストが成功した場合、レスポンスには、、、およびレスポンス ヘッダーがAccess-Control-Allow-Origin
含まAccess-Control-Allow-Methods
れ Access-Control-Allow-Headers
ます。プリフライト リクエストが成功しなかった場合、これらのヘッダーは表示されないか、HTTP レスポンスが 200 になりません。
フラグUser-Agent
を使用して、 などの追加のヘッダーを指定することもできます。-H
ほとんどのケースをカバーする更新された回答
curl -H "Access-Control-Request-Method: GET" -H "Origin: http://localhost" --head http://www.example.com/
- http://www.example.com/をテストする URL に置き換えます。
- 応答に含まれる
Access-Control-Allow-*
場合、リソースは CORS をサポートします。
代替回答の根拠
私は時々この質問をグーグルで検索しますが、受け入れられた答えは私が必要とするものではありません。最初に、大量のテキストである応答本文を出力します。--head
出力のみのヘッダーを追加します。次に、S3 URL をテストするときは、追加のヘッダーを提供する必要があります-H "Access-Control-Request-Method: GET"
。
これが時間を節約することを願っています。
これだけでうまくいくようです:
curl -I http://example.com
Access-Control-Allow-Origin: *
返されたヘッダーを探します
プリフライト リクエストは、OPTIONS
HTTP メソッドを使用して行われます。
からへのPOST
リクエストでCORS をテストする場合、コマンドは次のようになります。http://mysite.example.com
https://myapi.example.com/foo
curl -XOPTIONS \
-H "Access-Control-Request-Method: POST" \
-H "Origin: http://mysite.example.com" \
https://myapi.example.com/foo
応答は、OK
または のようなエラー メッセージですDisallowed CORS origin
。必要に応じて、ヘッダーを含めることもでき-i
ます。
GET
これは、 または のいずれかHEAD
を要求し、ヘッダーの解釈を求める他の応答よりもはるかに単純です。