オリジン間リソース共有(Cross-Origin-Resource-Sharing、CORS) とは
-
あるオリジンで動作するウェブアプリに、異なるオリジンに存在するリソースへのアクセス権を与えるようブラウザに指示する仕組み。
-
オリジン
* ウェブコンテンツにアクセスするために使われる URLのプロトコル、 ドメイン(ホスト)、 ポート によって定義される情報。
* スキーム、ドメイン(ホスト)、ポートがすべて一致した場合、二つのオブジェクトは同一オリジンであると言える。- 例
http://example.com/app1/index.html http://example.com/app2/index.html
-
-
オリジン間リクエスト例
-
https://domain-a.comで提供されているウェブアプリのフロントエンド JavaScript がXMLHttpRequestを使用してhttps://domain-b.com/image-b.pngへリクエストを行う場合- セキュリティ上の理由から、ブラウザは、スクリプトによって実行されるオリジン間 HTTP リクエストを制限する。
-
XMLHttpRequestやFetchは同一オリジンポリシー(あるオリジンのリソースは、そのリソースから他のオリジンのリソースにアクセスできないように制限する)に従う。 - 上述のAPI を使用するウェブアプリは、そのアプリと同一オリジンに対してのみリソースのリクエストを行うことができ、それ以外のオリジンの場合は正しい CORS ヘッダーを含んでいる必要がある。
-
アクセス制御方法
単純リクエスト
プリフライトリクエスト
-
OPTIONSメソッドを指定した HTTP リクエストを他ドメインのリソースに向けて送信し、実際のリクエストを送信しても問題ないかを確認する。
資格情報付きリクエスト
-
クッキー付きでリクエストする。
-
サーバーはアクセスを許可する場合、
Access-Control-Allow-Credentials:trueを付与してレスポンスを返却する。



