CORS解説

Cross-Origin Resource Sharingの完全ガイド — 仕組み、すべてのヘッダーの解説、よくあるエラーと修正方法。

概要

CORSとは?

Cross-Origin Resource Sharing(CORS)は、HTTPヘッダーベースのメカニズムで、サーバーが自身以外のオリジン(ドメイン、スキーム、ポート)からブラウザがリソースの読み込みを許可すべきオリジンを示すことができます。ブラウザはデフォルトで同一オリジンポリシーを適用し、ページを提供したオリジンとは異なるオリジンへのリクエストをブロックします。

同一オリジンポリシー

2つのURLが同じスキーム(http/https)、ホスト、ポートを共有している場合、同じオリジンを持ちます。例えば、https://app.example.comとhttps://api.example.comはホストが異なるため、異なるオリジンです。同一オリジンポリシーは、悪意のあるサイトが別のサイトの機密データを読み取ることを防ぎます。CORSは、この制限を制御された方法で緩和するメカニズムです。

シンプルリクエスト vs. プリフライト

「シンプルリクエスト」はGET、HEAD、またはPOSTをCORSセーフリストのヘッダーのみで使用し、プリフライトをトリガーしません。それ以外のすべてのクロスオリジンリクエスト(PUTやDELETEなどのメソッドを使用するもの、またはAuthorizationなどのヘッダーを含むもの)はプリフライトをトリガーします。ブラウザは実際のリクエストを送信する前に、まずOPTIONSリクエストを送信してサーバーに許可を求めます。

CORSの仕組み

シンプルリクエスト

ブラウザ
GET /api/data
Origin: https://app.example.com
サーバー
200 OK
Access-Control-Allow-Origin: *
JSにレスポンスを共有

プリフライトリクエスト

ブラウザ
OPTIONS /api/data
Access-Control-Request-Method: DELETE
サーバー
204 No Content
Access-Control-Allow-Methods: DELETE
ブラウザ
DELETE /api/data
Origin: https://app.example.com
JSにレスポンスを共有

CORSヘッダー

10件中10件を表示

よくあるエラー

8件中8件を表示

関連ガイド

RequestDockで試す

実際のHTTPリクエストを送信してレスポンスを確認 — ブラウザ上で直接。