Allow-Credentials の値が True になっている
設定ファイルに True と書いてしまい、Cookie つきのリクエストだけが失敗するようになった典型的なミスの例です。A が誤り、B が直した後の状態として、直ったことを確かめます。
入力
A: 変更前の応答ヘッダー
Access-Control-Allow-Origin: https://app.example.com Access-Control-Allow-Credentials: True
B: 変更後の応答ヘッダー
Access-Control-Allow-Origin: https://app.example.com Access-Control-Allow-Credentials: true
リクエストの資格情報(credentials)
つき(Cookie や認証情報を送る。fetch の credentials: include など)
結果
エラー 1 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
- エラー A: Access-Control-Allow-Credentials Access-Control-Allow-Credentials の値「True」は使えません。値は小文字の true だけで、True や TRUE も不可です(Fetch Standard 3.3.4・3.3.5)。
| 差分のあるヘッダー | 1 項目(全 6 項目中) |
|---|---|
| A のエラー・警告 | エラー 1 件・警告 0 件 |
| B のエラー・警告 | エラー 0 件・警告 0 件 |
| 判定 | A の規則違反(エラー)が B で解消されます |
| 前提のリクエスト | 資格情報つき(Cookie などを送る) |
ヘッダーごとの差分
| ヘッダー | A(変更前) | B(変更後) | 差分 |
|---|---|---|---|
| Access-Control-Allow-Origin | https://app.example.com | https://app.example.com | 同じ |
| Access-Control-Allow-Credentials | True | true | True → true |
| Access-Control-Allow-Methods | (なし) | (なし) | (どちらもなし) |
| Access-Control-Allow-Headers | (なし) | (なし) | (どちらもなし) |
| Access-Control-Max-Age | (なし=既定 5 秒) | (なし=既定 5 秒) | 同じ(有効な値 5 秒) |
| Access-Control-Expose-Headers | (なし) | (なし) | (どちらもなし) |
検算(この結果になる理由)
Allow-Credentials の書式は小文字の true だけ(Fetch 3.3.4・3.3.5)なので、A の True はエラー 1 件、B の true は問題なしです。差分は Allow-Credentials の 1 項目だけで、要約の判定は A のエラーが B で解消される、になります。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 実際のサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- Vary: Origin など Access-Control-* 以外のヘッダーとの組み合わせ(CDN のキャッシュを含む)は判定せず、読み飛ばします。
- preflight(OPTIONS)の応答か通常の応答かは区別しません。Allow-Methods・Allow-Headers・Max-Age は preflight の応答で使われるヘッダーです。
- リクエスト側の Origin・メソッド・ヘッダーとの突き合わせ(この設定で実際にそのリクエストが通るか)まではしません。
ご利用にあたって
- 結果は Fetch Standard にもとづく読み解きで、個々のブラウザやプロキシ、CDN での実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際のブラウザの開発者ツールを使い、リクエストが通ることを確認してください。