CORS
追加のHTTP headerを使用して、ユーザーエージェントが現在のサイトとは別のオリジン (ドメイン) のサーバーから選択されたリソースにアクセスする権限を得られるようにする仕組み セキュリティのため
もしどんなサーバーにもリクエストしていいなら、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.
https://www.youtube.com/watch?v=ryztmcFf01Y
後方互換性がある
https://www.youtube.com/watch?v=yBcnonX8Eak