CORSチェッカー
任意のURLのCross-Origin Resource Sharing(CORS)設定を確認します。Access-Control-* レスポンスヘッダーを検査し、カスタムOrigin/メソッド/ヘッダーでオプションのプリフライト(OPTIONS)リクエストを実行し、ワイルドカード + 認証情報、Vary: Originの欠落、または過度に広範な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
ターゲットURLを入力
テストしたいエンドポイントを貼り付けます(例:https://api.example.com/resource)。
テスト元のOriginを設定
フロントエンドアプリのOrigin(スキーム + ホスト)を入力します(例:https://app.example.com)。これはブラウザがOriginヘッダーで送信する値です。
チェックモードを選択
レスポンスヘッダーとプリフライトの動作の両方を分析するには「自動(推奨)」を使用します。非プリフライトシナリオを特に確認したい場合は「シンプルリクエスト」、OPTIONSチェックのみを実行する場合は「プリフライトのみ」を使用します。
プリフライトの詳細を設定(該当する場合)
「プリフライトを実行(OPTIONS)」を有効にし、実際のブラウザのプリフライト動作(例:認証、content-type)をシミュレートするためにリクエストメソッドとリクエストヘッダー(カンマ区切り)を設定します。ユースケースにクッキーや認証ヘッダーが含まれる場合は「認証情報を考慮」を切り替えます。
調査結果を確認してエクスポート
調査結果/スコアカードと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とプリフライトの動作を再現します。ツールが報告する内容のデバッグと検証に役立ちます。
macOS / Linux
通常リクエストのCORSヘッダーを確認(ブラウザのOriginをシミュレート)
curl -i -H "Origin: https://example.com" https://api.example.com/resourceAccess-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.HeadersAccess-Control-* ヘッダーが存在する場合に表示します。
ユースケース
フロントエンドの「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)リクエストを送信しますか?
❓なぜ「Access-Control-Allow-Origin: *」は認証情報と一緒に危険なのですか?
❓なぜVary: Originが必要なのですか?
❓CORSは非ブラウザクライアントからAPIを保護できますか?
CORSはブラウザによって強制されます。ブラウザ外で実行されるスクリプト(サーバー、curl、モバイルアプリ)はCORSに関係なくAPIを呼び出せます。実際のアクセス制御には認証、認可、レート制限を使用してください。❓プリフライトテスト時に「リクエストヘッダー」には何を入力すべきですか?
❓ここにURLを貼り付けても安全ですか?
Pro Tips
任意のOriginを反映させるのではなく、信頼できるオリジンの許可リストを使用することを推奨します。CORSはセキュリティに敏感な設定として扱ってください。
クッキー/認証を使用する場合は、Access-Control-Allow-Credentials: trueを設定し、明示的なオリジン(「*」ではない)を返してください。
複数のオリジンを許可する場合、または許可するオリジンを動的に選択する場合は、Vary: Originを追加してください。
安定したAPIのプリフライト遅延を減らすために、適切なAccess-Control-Max-Ageを追加してください。
プリフライトと実際のリクエストパスの両方をテストしてください。一部の設定ではGETには正しいヘッダーを返すが、OPTIONSでは失敗することがあります。
JSONレポートをエクスポートし、APIゲートウェイ設定の変更と一緒に保管して、迅速にリグレッションを発見できるようにしてください。
Additional Resources
Other Tools
- CSSビューティファイア
- HTMLビューティファイア
- JavaScriptビューティファイア
- PHPビューティファイア
- カラーピッカー
- スプライト抽出ツール
- Base32 バイナリエンコーダー
- Base32 デコーダー
- Base32 エンコーダー
- Base58 バイナリエンコーダー
- Base58 デコーダー
- Base58 エンコーダー
- Base62 バイナリエンコーダー
- Base62 デコーダー
- Base62 エンコーダー
- Base64 バイナリエンコーダー
- Base64デコーダー
- Base64エンコーダー
- 16進数バイナリエンコーダー
- 16進数デコーダー
- 16進数エンコーダー
- C#フォーマッタ
- CSVフォーマッタ
- Dockerfile Formatter
- Elmフォーマッタ
- ENVフォーマッタ
- Goフォーマッタ
- GraphQLフォーマッタ
- HCLフォーマッタ
- INIフォーマッタ
- JSONフォーマッタ
- LaTeXフォーマッタ
- Markdownフォーマッタ
- Objective-Cフォーマッタ
- Php Formatter
- Protoフォーマッタ
- Pythonフォーマッタ
- Rubyフォーマッタ
- Rustフォーマッタ
- Scalaフォーマッタ
- シェルスクリプトフォーマッタ
- SQLフォーマッタ
- SVG フォーマッタ
- Swift フォーマッタ
- TOML フォーマッタ
- Typescript Formatter
- XML フォーマッタ
- YAML フォーマッタ
- Yarn フォーマッタ
- CSSミニファイア
- Html Minifier
- Javascript Minifier
- JSONミニファイア
- XML ミニファイア
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- HTTPヘッダービューア
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDFからテキストへ
- 正規表現テスター
- SERPランクチェッカー
- Whois ルックアップ