CORSチェッカー

任意のURLのCross-Origin Resource Sharing(CORS)設定を確認します。Access-Control-* レスポンスヘッダーを検査し、カスタムOrigin/メソッド/ヘッダーでオプションのプリフライト(OPTIONS)リクエストを実行し、ワイルドカード + 認証情報、Vary: Originの欠落、または過度に広範なallow-headersなどの一般的な設定ミスを検出します。

Loading…

概要 CORSチェッカー

APIまたはページのURLを貼り付け、ブラウザがクロスオリジンリクエストを許可するかどうかを確認します。このツールはCORSレスポンスヘッダーを分析し、現実的なプリフライト(OPTIONS)チェックを実行可能で、リスクのあるまたは壊れた設定(例:認証情報付きの「*」、Vary: Originの欠落、弱いallow-methods/allow-headers)を強調表示します。

機能

  • 任意の公開URLのCORSヘッダー検査(Access-Control-* および関連ヘッダー)。
  • カスタムOrigin、リクエストメソッド、リクエストヘッダーを使用したオプションのプリフライトシミュレーション(OPTIONS)。
  • リダイレクトの追跡(最大10回)により、ブラウザが実際に到達する最終エンドポイントを検証できます。
  • 完全な透明性とデバッグのための生ヘッダービュー。
  • 調査結果 + スコアカードと「問題のみ」フィルタリングによる迅速なトリアージ。
  • Vary分析により、Vary: Originの欠落やその他のキャッシュ関連のCORS落とし穴を検出。
  • 監査、チケット、ドキュメント用に結果をJSONおよびPDFレポートとしてエクスポート。
  • 一般的な問題に対する組み込みの推奨事項:ワイルドカード+認証情報、Originの反映、null Origin、allow-methods/allow-headersの欠落、max-ageの欠落、過度に広範なallow-headers。

🧭 使用方法 for cors-checker

1

ターゲットURLを入力

テストしたいエンドポイントを貼り付けます(例:https://api.example.com/resource)。

2

テスト元のOriginを設定

フロントエンドアプリのOrigin(スキーム + ホスト)を入力します(例:https://app.example.com)。これはブラウザがOriginヘッダーで送信する値です。

3

チェックモードを選択

レスポンスヘッダーとプリフライトの動作の両方を分析するには「自動(推奨)」を使用します。非プリフライトシナリオを特に確認したい場合は「シンプルリクエスト」、OPTIONSチェックのみを実行する場合は「プリフライトのみ」を使用します。

4

プリフライトの詳細を設定(該当する場合)

「プリフライトを実行(OPTIONS)」を有効にし、実際のブラウザのプリフライト動作(例:認証、content-type)をシミュレートするためにリクエストメソッドとリクエストヘッダー(カンマ区切り)を設定します。ユースケースにクッキーや認証ヘッダーが含まれる場合は「認証情報を考慮」を切り替えます。

5

調査結果を確認してエクスポート

調査結果/スコアカードとCORS分析の詳細を確認します。デバッグ時は「生ヘッダーを表示」をオンにします。監査用にJSON/PDFをエクスポートして共有または保存します。

技術仕様

リクエストモデル

このツールはターゲットURLのCORSヘッダーを検査し、オプションで提供されたOrigin、メソッド、リクエストヘッダーを使用してプリフライト(OPTIONS)リクエストを実行できます。リダイレクトの追跡がサポートされています。

設定動作デフォルト
チェックモード自動、シンプルリクエスト、またはプリフライトのみ自動
プリフライト実行 (OPTIONS)有効の場合、OPTIONSプリフライトシミュレーションを実行有効
オリジン分析/プリフライトで使用されるOriginヘッダー値https://example.com
リクエストメソッドプリフライト用のAccess-Control-Request-Method値GET
リクエストヘッダープリフライト用のAccess-Control-Request-Headers(カンマ区切り)
リダイレクトを追跡最終URLまでのリダイレクトチェーンを追跡有効
最大リダイレクト数ループ防止のためのリダイレクト上限10 (範囲 0–20)
タイムアウトリクエストのタイムアウト制限15000 ミリ秒
ユーザーエージェントリクエストのユーザーエージェントを識別Encode64Bot/1.0 (+https://encode64.com)
プライベートネットワーク安全性のためプライベートネットワーク範囲へのアクセスをブロック無効 (プライベートネットワークは許可されていません)

分析されたヘッダー (主要CORSセット)

アナライザーは、ブラウザとプリフライトチェックで使用される標準的なCORSレスポンスおよびリクエストヘッダーに焦点を当てています。

ヘッダー目的
Access-Control-Allow-Origin許可されるオリジン
Access-Control-Allow-Credentialsクッキー/資格情報が許可されるかどうか (ワイルドカード以外のオリジンが必要)
Access-Control-Allow-Methodsクロスオリジンリクエストで許可されるメソッド(プリフライトに重要)
Access-Control-Allow-Headers許可されるヘッダー(Authorizationやカスタムヘッダーに重要)
Access-Control-Expose-HeadersブラウザのJSが読み取れるヘッダー
Access-Control-Max-Ageブラウザがプリフライトをキャッシュできる期間
Varyキャッシュキーのバリエーション(例:Vary: Origin) - キャッシュ汚染/混在を防ぐ
Origin / Access-Control-Request-*プリフライト動作をシミュレートするために使用

ヒューリスティック(一般的なCORSの落とし穴フラグ)

検出結果は、実践的かつセキュリティを考慮したチェックに基づき、壊れたまたは危険なCORS設定を検出します。

チェック項目重要性
ワイルドカード + 認証情報Access-Control-Allow-Origin: * は認証情報と併用できません。ブラウザがブロックするか、動作が安全ではありません
Vary: Origin の欠如レスポンスがOriginごとに異なる場合、キャッシュが正しく行われないと、共有キャッシュがサイト間でレスポンスを混在させる可能性があります
Originの反映Originを無条件にエコーすると、意図せず信頼できないオリジンを許可してしまう可能性があります
Null Origin 警告Origin: null はサンドボックス化されたiframeやファイルコンテキストで発生することがあります。これを許可することは多くの場合リスクが伴います
Allow-Methods / Allow-Headers の欠如サーバーがメソッド/ヘッダーを明示的に許可しない場合、プリフライトが失敗する可能性があります
過度に広範な Allow-Headers多すぎるヘッダーを許可すると、攻撃対象領域が拡大する可能性があります
Max-Age の欠如プリフライトが頻繁に実行され、レイテンシが増加する可能性があります
CORSはブラウザの強制メカニズムです。非ブラウザクライアント経由では、サーバーは依然としてクロスオリジンで到達可能です。CORSはより広範なセキュリティ態勢の一部として扱い、唯一の制御手段とは考えないでください。

コマンドライン

これらのコマンドを使用して、ターミナルからCORSとプリフライトの動作を再現します。ツールが報告する内容のデバッグと検証に役立ちます。

macOS / Linux

通常リクエストのCORSヘッダーを確認(ブラウザのOriginをシミュレート)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Vary を確認してください。

プリフライトOPTIONSリクエストを実行(メソッド + ヘッダー)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

プリフライトは、ブラウザが処理を続行するために、正しい Access-Control-Allow-Methods と Access-Control-Allow-Headers を返す必要があります。

ヘッダーを確認しながらリダイレクトを追跡

curl -iL -H "Origin: https://example.com" https://api.example.com

エンドポイントが異なるCORSルールを持つ別のホストにリダイレクトする場合に有用です。

Windows (PowerShell)

Originヘッダー付きでレスポンスヘッダーを検査

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Access-Control-* ヘッダーが存在する場合に表示します。

フロントエンドがクッキーや認証を使用する場合は、寛容なCORSを避けてください。信頼できるオリジンの明示的な許可リストを優先し、レスポンスがオリジンによって異なる場合は Vary: Origin を含めてください。

ユースケース

フロントエンドの「CORSブロック」ブラウザエラーをデバッグ

fetch/XHRがCORSエラーで失敗した場合、サーバーがあなたのOriginとリクエストタイプに対して必要なAccess-Control-*ヘッダーを返しているか確認します。

  • Access-Control-Allow-Originがアプリのオリジンと一致することを確認
  • クッキー/認証を使用する場合、Access-Control-Allow-Credentialsがtrue(かつオリジンがワイルドカードでない)ことを確認
  • 複数のオリジンを許可する場合、Vary: Originが存在することを確認

Authorization/カスタムヘッダーのプリフライトを検証

ほとんどの認証済みAPI呼び出しは、Authorizationや非シンプルなコンテンツタイプによりプリフライトをトリガーします。このツールはOPTIONSレスポンスが必要なメソッドとヘッダーを許可していることを確認するのに役立ちます。

  • Access-Control-Allow-Methodsに必要に応じてPOST/PUT/PATCH/DELETEが含まれていることを確認
  • Access-Control-Allow-Headersにauthorization、content-type、必要なX-*ヘッダーが含まれていることを確認
  • デプロイ前に不足しているallow-methods/allow-headersを捕捉

CORSポリシーのセキュリティレビュー

CORSの設定ミスは、特に認証情報がある場合、プライベートAPIを悪意のあるサイトに意図せず公開する可能性があります。結果を使用して高リスクパターンを捕捉します。

  • 認証情報と組み合わされたワイルドカードオリジンを検出
  • 任意のサイトを許可するオリジン反映パターンを検出
  • 意図しない場合のOrigin: null許可にフラグを立てる

プリフライトのキャッシュによるパフォーマンス向上

プリフライトリクエストは往復時間と遅延を増加させます。適切なMax-Ageは安定したAPIに対する繰り返しのプリフライトチェックを減らせます。

  • 適切な場合にAccess-Control-Max-Ageが存在することを確認
  • 頻繁なAPIトラフィックに対する繰り返しのOPTIONS呼び出しを削減

❓ Frequently Asked Questions

簡単に言うとCORSとは何ですか?

CORS(Cross-Origin Resource Sharing)は、あるオリジン(スキーム+ホスト+ポート)のウェブページが別のオリジンからのレスポンスを読み取れるかを制御するブラウザのセキュリティメカニズムです。特定のAccess-Control-*レスポンスヘッダーに依存します。

ブラウザはいつプリフライト(OPTIONS)リクエストを送信しますか?

プリフライトは、リクエストが「シンプル」でない場合、例えば特定のコンテンツタイプでPOSTなどのメソッドを使用する場合や、AuthorizationやカスタムX-*ヘッダーなどのヘッダーを送信する場合に送信されます。ブラウザは実際のリクエストを送信する前にOPTIONSで権限を確認します。

なぜ「Access-Control-Allow-Origin: *」は認証情報と一緒に危険なのですか?

ブラウザは認証情報が関与する場合、明示的なオリジンを要求します。認証情報とワイルドカードを使用することは、認証情報付きリクエストでは無効であり、危険な設定を示します。信頼できるオリジンの明示的な許可リストを優先してください。

なぜVary: Originが必要なのですか?

サーバーがリクエストOriginに応じて異なるAccess-Control-Allow-Origin値を返す場合、キャッシュはあるサイト向けのレスポンスを別のサイトに提供しないように、Originによって変化する必要があります。Vary: Originはキャッシュの混同と関連するセキュリティ問題を防ぐのに役立ちます。

CORSは非ブラウザクライアントからAPIを保護できますか?

いいえ。CORSはブラウザによって強制されます。ブラウザ外で実行されるスクリプト(サーバー、curl、モバイルアプリ)はCORSに関係なくAPIを呼び出せます。実際のアクセス制御には認証、認可、レート制限を使用してください。

プリフライトテスト時に「リクエストヘッダー」には何を入力すべきですか?

フロントエンドが送信するヘッダーをカンマ区切りでリストします(例:authorization, content-type, x-request-id)。これによりAccess-Control-Request-Headersをシミュレートし、サーバーがそれらを許可するか確認できます。

ここにURLを貼り付けても安全ですか?

このツールは提供されたURLに対してサーバーサイドのリクエストを行い、プライベートネットワークターゲットをブロックします。URLにシークレット(クエリストリングのトークンなど)を含めないでください。信頼できる公開エンドポイントを使用することをお勧めします。

Pro Tips

Security Tip

任意のOriginを反映させるのではなく、信頼できるオリジンの許可リストを使用することを推奨します。CORSはセキュリティに敏感な設定として扱ってください。

Security Tip

クッキー/認証を使用する場合は、Access-Control-Allow-Credentials: trueを設定し、明示的なオリジン(「*」ではない)を返してください。

Security Tip

複数のオリジンを許可する場合、または許可するオリジンを動的に選択する場合は、Vary: Originを追加してください。

Performance Tip

安定したAPIのプリフライト遅延を減らすために、適切なAccess-Control-Max-Ageを追加してください。

Best Practice

プリフライトと実際のリクエストパスの両方をテストしてください。一部の設定ではGETには正しいヘッダーを返すが、OPTIONSでは失敗することがあります。

CI Tip

JSONレポートをエクスポートし、APIゲートウェイ設定の変更と一緒に保管して、迅速にリグレッションを発見できるようにしてください。

Additional Resources

Other Tools