generated at
CORS
Cross origin requestを実現する手法の1つ
> 追加のHTTP headerを使用して、ユーザーエージェントが現在のサイトとは別のオリジン (ドメイン) のサーバーから選択されたリソースにアクセスする権限を得られるようにする仕組み

browserでは同一Originではないサーバ上のリソース(画像とか)を許可なく取得できないようになっている(Same Origin Policy
セキュリティのため
もしどんなサーバーにもリクエストしていいなら、XSSができる
でも取得したいときがある
例:自分の管理している別オリジンのサービスと連携したい、外部SaaSと連携したい
そこでCORSを使ってこのセキュリティを緩める

大雑把な仕組み
クライアントがリクエストをする(この時にoriginを送る)
サーバーは許可するoriginだった場合特定のHTTPヘッダーを返す
ブラウザはこれで許可された場合にのみ実際にリクエストを行う


未対応なサイトへのリクエストは弾かれる
> CORS未対応: サイト api.bar.com が CORS (やその他のアクセス制御) を全く考慮していなければ /user/profile への GET リクエストで JSON データを含むレスポンスが返されます。しかしレスポンスに Access-Control-Allow-Origin header付けられていないため、ブラウザはそのデータを www.foo.com に提供することが許可されていないとみなし (サーバ処理及び HTTP 通信上は成功しているにも関わらず) Ajax の呼び出しは失敗します。後述する preflight リクエストの OPTIONS の場合も同様に判断されます。


>browser mechanism that requests and permits access to cross-origin resources.


後方互換性がある