(Web関連用語)
https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy
クロスサイトリクエストフォージェリ(CSRF)などのセキュリティ攻撃を防止するために、ブラウザは「同一生成元ポリシー(Same-Origin Policy)」という仕組みを実装している。異なるオリジンのリソースへのアクセスに制約をかけるものである。制約はまた、JSONP や CORS(Cross-Origin Resource Sharing)と呼ばれる仕組みを利用することで一部解除することができる。
オリジンとは
オリジン(Origin)は、スキーム、ホスト、ポート番号の組み合わせである。
下記は同じオリジンとみなされる(=同一オリジン)。
http://site-a.example.com/
http://site-a.example.com:80/
http://site-a.example.com/example.html
下記は異なるオリジンとみなされる(=クロスオリジン)。
https://site-a.example.com/ ← スキームが異なる
http://site-b.example.com/ ← ホストが異なる
http://site-a.example.com:8080/ ← ポート番号が異なる
制限の対象となるもの
- JavaScriptでの非同期通信
厳密には「リクエストはできるがレスポンスを取得できない」という制限で、クロスオリジンでは許可された場合にしかレスポンスを取得することはできない。 - Canvas
異なるオリジンから読み込まれた画像・データをCanvas内に描画するとCanvasは汚染(taint)される。汚染されたCanvasではデータへのアクセス(getImageData()、toBlob()、toDataURL())が制限される。 - Web Storage
Web Storageなどのブラウザー内部に保存されるデータへのアクセスはオリジン単位で権限が分かれているため、異なるオリジンに属するストレージを読み書きすることはできない。 - X-Frame-Options
レスポンスヘッダーにSAMEORIGINが設定されている場合、異なるオリジンでは<iframe>などを使った別サイトコンテンツの埋め込みができない。
制限の対象にならないもの
- Cookie
- HTTP認証
- document.domainを書き換えてのinnerHTMLの読み書き