Origin (オリジン)

f:id:utouto97:20210725220811j:plain

Origin (オリジン)

Origin (オリジン)は、URLのスキーム、ホスト、ポートの組み合わせで決まります。
これら(スキーム、ホスト、ポート)がすべて同じときのみ、同じオリジンであるといえます。
スキームとは、httpやhttpsなどプロトコルのことです。

http://example.com/api1http://example.com/api2は、スキーム(http)、ホスト(example.com)、ポート(80)がすべて同じなので、同一オリジンです。
つまり、ディレクトリ以下はオリジンとは無関係ということです。

http://example.comhttps://example.comは、スキームが異なるため、同一オリジンではありません。
http://example.comhttp://www.example.comは、ホストが異なるため、同一オリジンではありません。
http://example.comhttp://example.com:8080は、ポートが異なるため、同一オリジンではありません。

同一生成元ポリシー

同一生成元ポリシー (同一オリジンポリシー)は、同一オリジンではない場合に、制限を設けています。
例えば、次のようなものが一例として挙げられます。

  • XMLHttpRequestによる取得の禁止
  • スクリプトによる別のoriginであるiframeやwindowに対する操作の制限(iframe.contentWindow、window.parent、window.open、window.openerなど)
  • Canvasへの一部の操作の制限

要は、異なるオリジン間でのリソースのアクセスを制限・禁止します。
これらの制限によって、攻撃の脅威を減らすことができます。

CORS

しかし、Web開発を行うにあたり、異なるオリジン間のリソースアクセスをしたいときもあります。
そのような場合に、CORSを設定します。

CORSは、Cross-Origin Resource Sharingの略で、オリジン間リソース共有ともいいます。
CORSは、別のオリジンからのリクエストを許可するかどうかを決める仕組みです。
CORSを正しく設定することで、異なるオリジン間でもリソースのアクセスが可能になります。

終わり