1. ホーム
  2. curl

[解決済み] cURLを使用したCORSリクエストのデバッグ方法は?

2022-02-06 12:44:56

質問

cURL を使用して CORS リクエストをデバッグするにはどうすればよいですか?これまでのところ、プリフライトリクエストをシミュレートする方法は見つかっていません。

どのように解決するのですか?

ここでは、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 フラグを使用します。