同一生成元ポリシーとは?
同一生成元ポリシー(Same Origin Policy(SOP))は1つの生成元からロードしたスクリプトによって別の生成元の文書内のプロパティーやメソッドが取得または操作されるのを防止するためのものである。
ユーザーがプロバイダとやり取りする場合、そのユーザーはそのサイトに送信された情報が他のサイトに漏れてしまうことを望まないという考え方に基づき、ユーザの情報を保護するためにある。
同一生成元であることの条件
__同一生成元である__ということは以下の条件を満たすことである。
- スキーム(プロトコル)が一致している。
- ホスト(FQDN; Fully Qualified Domain Name)が一致している。
- ポート番号が一致している。
例)
http://hogehogehoge.com/index.html
このURLと以下のURLが同一生成元なのかどうか見てみる。
http://hogehogehoge.com:80
ーーーー>同じ
http://hogehogehoge.com/dir/page1.html
ーーーー>同じ
https://hogehogehoge.com/index.html
ーーーー>スキームが違うので違う
http://hogehogehoge.com:81
ーーーー>ポートが違うので違う
http://ufufu.com/index.html
ーーーー>ホストが違うので違う
同一生成元ではない場合、制限されること
同一生成元ポリシーによって、たとえば生成元Aと生成元Bがある場合、生成元AのWEBページでは以下の事ができない。
- 生成元BへのXMLHttpRequestを使用した通信
- frame/iframeの、生成元Bから生成されたコンテンツの読み取り、操作