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.comOutputb.com returns the ACAO header to authorizePreflight followed by the actual request
よくあるエラー
- The browser blocks the response when the server returns no CORS headers
- Configure the Access-Control-Allow-* headers