CORS プリフライト解析

オリジン、メソッド、リクエストヘッダー、認証情報モードを、コピーした CORS レスポンスヘッダーと比較して互換性を確認します。

ブラウザ内でローカルに実行
このツールの処理はすべてブラウザ内で行われます。VoriTools が入力内容をアップロード・保存したり、外部 API に送信したりすることはありません。
ブラウザのリクエストとコピーしたレスポンスヘッダーこのチェッカーはブラウザのルールのみをモデル化します。API に接続したり、認証情報を再送したりすることはありません。

コピーしたレスポンスヘッダーに対してブラウザの CORS リクエストをモデル化する

このツールは、貼り付けたレスポンスヘッダーに対してブラウザの CORS リクエストを 1 件モデル化します。答えは 1 つだけです。ブラウザはそのレスポンスをページに読ませるか、必要な場合のプリフライトは通るか。

処理はすべてタブ内で完結します。リクエストは送信しないため、要約が示すのはコピーしたヘッダーが許す範囲であり、実際のサーバーが現在返す内容ではありません。

  1. リクエストオリジン(スキーム、ホスト、ポート)を入力し、メソッドを選びます。PUT、PATCH、DELETE はプリフライトを発生させ、GET、HEAD、POST は通常発生しません。
  2. ブラウザが Access-Control-Request-Headers に載せるヘッダー(例: Authorization, X-Request-ID)を入力し、Cookie や HTTP 認証を送る場合は認証情報にチェックします。
  3. レスポンスヘッダーのブロック全体を `名前: 値` の行で貼り付け、「CORS ポリシーを分析」を押します。
  4. まず判定を、次に各チェックを読みます。各行はリクエストを許可またはブロックしたヘッダーを示します。要約はコピーまたはダウンロードできます。

Access-Control ヘッダーの読み取り方と、このツールが扱わない範囲

オリジンの一致と認証情報

Access-Control-Allow-Origin はリクエストオリジンを完全に一致して繰り返す必要があります。スキームとホストは小文字、既定ポートは省略、末尾スラッシュなしです。Chrome はオリジン `https://app.example.com` に対して `https://app.example.com/` を拒否し、このツールも同じ不一致を報告します。

`*` がすべてのオリジンを許可するのは、リクエストが認証情報を送らない場合だけです。Cookie や HTTP 認証を使う場合は、レスポンスがオリジンを繰り返し `Access-Control-Allow-Credentials: true` を付ける必要があり、ワイルドカードのオリジンは許可が広く見えてもブロックされます。

プリフライトが必要な場合と不要な場合

JSON の Content-Type や独自ヘッダーがあると、ブラウザは本リクエストの前に OPTIONS のプリフライトを送ります。その場合 Chrome は Access-Control-Allow-Methods の該当エントリと、列挙した各ヘッダーに対する Access-Control-Allow-Headers のエントリを要求し、なければブロックされます。同じポリシーでも `text/plain` は通ります。

GET、HEAD、POST はセーフリストのメソッドで、Access-Control-Allow-Methods に列挙がなくてもプリフライトを通ります。PUT、PATCH、DELETE は列挙が必要です。メソッド名とヘッダー名は大文字小文字を区別せず比較され、`post` や `x-test` も一致します。

認証情報があると無効になるワイルドカード

`Access-Control-Allow-Methods: *` と `Access-Control-Allow-Headers: *` がワイルドカードとして働くのは、認証情報を含まないリクエストだけです。認証情報を含むリクエストは、メソッドと各ヘッダーが明示的に列挙されている必要があり、このツールはアスタリスクを信用せずにそのとおり報告します。

このツールが行わないこと: リクエストの送信や認証情報の再送は行わず、ヘッダー値の制限(Authorization のスキーム、Content-Type の値)は判定せず、リダイレクト、null オリジン、Access-Control-Expose-Headers、Max-Age、Vary は対象外です。

最近使ったツール: