仕様と根拠
読み方
A と B の各行を「ヘッダー名: 値」に分け、Fetch Standard 3.3 節が定める 6 つの応答ヘッダー(Allow-Origin・Allow-Credentials・Allow-Methods・Allow-Headers・Max-Age・Expose-Headers)だけを比べます。ヘッダー名は大文字・小文字を区別せず、Allow-Methods・Allow-Headers・Expose-Headers は並びを集合として比べます。
エラーにする条件
Allow-Origin がない、複数ある、オリジンの形でない(末尾の / など)、資格情報つきで * になっている、資格情報つきで Allow-Credentials が true(小文字)でない場合は、ブラウザの CORS チェックが失敗するのでエラーにします(3.3.4・3.3.5・4.10 節)。
警告・情報にする条件
資格情報つきの Allow-Methods・Allow-Headers・Expose-Headers の * は、ワイルドカードにならず「*」という名前そのものになるため警告にします。Max-Age が整数でないと無効で既定の 5 秒になる点(4.8 節)も警告、資格情報なしで Allow-Credentials が無視される点は情報です。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| Fetch Standard(WHATWG) | 2026年10月28日 | 3.3.3 節(応答ヘッダー)・3.3.4 節(ABNF)・3.3.5 節(資格情報)・4.8 節(Max-Age 既定 5 秒)・4.10 節(CORS チェック)・2.2.2 節(Authorization は * に含まれない) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 実際のサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- Vary: Origin など Access-Control-* 以外のヘッダーとの組み合わせ(CDN のキャッシュを含む)は判定せず、読み飛ばします。
- preflight(OPTIONS)の応答か通常の応答かは区別しません。Allow-Methods・Allow-Headers・Max-Age は preflight の応答で使われるヘッダーです。
- リクエスト側の Origin・メソッド・ヘッダーとの突き合わせ(この設定で実際にそのリクエストが通るか)まではしません。
ご利用にあたって
- 結果は Fetch Standard にもとづく読み解きで、個々のブラウザやプロキシ、CDN での実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際のブラウザの開発者ツールを使い、リクエストが通ることを確認してください。