TL;DR

URI のスキーム、ホスト、ポート番号の 3 つの組。ブラウザなどのユーザエージェントが、権限やアクセスの範囲を決める単位として使う。RFC 6454 で定義されている。

なぜ必要か

RFC 6454 によると、ユーザエージェントは異なるオリジンを互いに隔離し、オリジン間の通信を制御された形でだけ許す。ある URI のコンテンツが別の URI のオブジェクトにアクセスできるのは、2 つの URI が同じオリジンに属するときだけである。この考え方が同一生成元ポリシーである。

仕組み

URI からスキーム、ホスト、ポート番号を取り出し、その 3 つの組をオリジンとする。3 つがすべて一致すれば同じオリジン、1 つでも違えば別のオリジンになる。

例

RFC 6454 の例では、次の URI はすべて同じオリジンである。スキーム、ホスト、ポート番号がどれも同じになる。

http://example.com/
http://example.com:80/
http://example.com/path/file

次の URI は、上とはそれぞれ別のオリジンである。順にポート番号、スキーム、ホストが違う。

http://example.com:8080/
https://example.com:80/
http://www.example.com/

Local Storage や Session Storage のデータは、オリジンごとに保存される。

関連

出典