コンテンツへスキップ
uencoder

CORS

CORS(Cross-Origin Resource Sharing)は、HTTP ヘッダーでページが別のオリジンのリソースにアクセスできるかを制御するブラウザのセキュリティ機構であり、クロスサイトな読み取りを防ぐ。

目的

同一オリジンポリシーを緩和して正当なクロスオリジン API 呼び出しを許可しつつ、悪意あるサイトがクロスオリジンのレスポンスを読み取るのを防ぐ。

メカニズム

ブラウザはクロスオリジンリクエストに Origin ヘッダーを付ける。単純なリクエストは直接送られ、プリフライトが必要なものはサーバーが許可するメソッドとヘッダーの OPTIONS 検査を経る。サーバーは Access-Control-Allow-Origin などのヘッダーを返してアクセスを認可する。クレデンシャル付きリクエストにはさらに Allow-Credentials が要る。

ユースケース

  • クロスオリジン API の呼び出し
  • CDN のフォントや画像の読み込み
  • マイクロサービス間のフロントエンド集約
  • サードパーティ SDK の統合

例

  • 入力
    Origin: https://a.com → https://b.com
    Output
    b.com returns the ACAO header to authorize

    Preflight followed by the actual request

よくあるエラー

The browser blocks the response when the server returns no CORS headers
Configure the Access-Control-Allow-* headers

関連用語

References