CORS チェッカー
API の URL と呼び出し元の Origin を入れると、プリフライトと応答の CORS ヘッダーを確かめます。
このツールは当社のサーバーから送ります。ブラウザから見た結果と違う場合があります (IP 制限など)。
確かめること
- Access-Control-Allow-Origin が Origin と一致するか (または
*) - プリフライトが 2xx を返すか、転送されていないか
- メソッドとヘッダーが Access-Control-Allow-Methods / -Headers にあるか
- Cookie を付けるとき、
*を使わず Access-Control-Allow-Credentials: true があるか - Origin ごとに変わる応答に Vary: Origin があるか、Access-Control-Max-Age の値
判定は Fetch Standard (WHATWG) の CORS の手順に沿っています。
よくある質問
プリフライトとは何ですか。
別のオリジンへ送るリクエストが、GET / HEAD / POST 以外のメソッドや、決まった種類以外のヘッダー (Authorization や Content-Type: application/json など) を使うとき、ブラウザが先に OPTIONS で送ってよいかを確かめる仕組みです。サーバーが 2xx と Access-Control-Allow-* ヘッダーで許可したときだけ、本リクエストが送られます。
Access-Control-Allow-Origin を * にしたのに動きません。
Cookie を付けて呼ぶ (fetch の credentials: 'include') ときは * が使えません。Origin をそのまま返し、Access-Control-Allow-Credentials: true を付けます。Authorization ヘッダーは Access-Control-Allow-Headers の * でも許可されないため、名前を書きます。
ブラウザでは失敗するのに、ここでは成功します。
このツールは当社のサーバーから送るため、IP アドレスで制限している API や、ブラウザの Cookie・ログイン状態で応答が変わる API では結果が違います。また、本リクエストの転送先や、入力したヘッダーの値までは送っていません。ブラウザの開発者ツールの Network で、OPTIONS と本リクエストの応答ヘッダーも確かめてください。