この記事では『Same-site・Cross-site・Same-origin・Cross-originの違い』について、
- TLDとeTLDとは
- Same-siteとCross-siteの違い
- Same-siteとCross-siteの具体例
- Same-originとCross-originの違い
- Same-originとCross-originの具体例
- Same-site・Cross-site・Same-origin・Cross-originの違い
などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
TLDとeTLDとは
Same-site(同一サイト)とCross-site(異なるサイト)、Same-origin(同一オリジン)とCross-origin(異なるオリジン)を理解するためには、TLD(トップレベルドメイン)とeTLD(エフェクティブトップレベルドメイン)を知っておく必要があるので説明します。
- TLD(トップレベルドメイン)
- ドメイン名の最後の部分です。例えば、
.com
、.org
、.net
などがあります。 - TLDはRoot Zone Databaseにリスト化されています。
- ドメイン名の最後の部分です。例えば、
- eTLD(エフェクティブトップレベルドメイン)
- Public Suffix Listにリスト化されたドメインです。
- 単一のTLD(例:
.com
)だけでなく、複合ドメイン(例:.co.jp
や.github.io
)も含まれます。 com
はTLD(トップレベルドメイン)ですが、同時にeTLD(エフェクティブトップレベルドメイン)としても扱われます。
Same-siteとCross-siteの違い
Same-site(同一サイト)になる条件を以下に示します。以下の条件が満たされない場合、Cross-site(異なるサイト)になります。
Same-siteの条件
- eTLD+1が一致すること
- eTLD+1は、eTLDに1つのラベルを加えたものです。
https://www.example.com
の場合、example.com
がeTLD+1に相当します。https://www.example.co.jp
の場合、example.co.jp
がeTLD+1に相当します。
- eTLD+1は、eTLDに1つのラベルを加えたものです。
- スキーム(
https,
http
)が一致すること
サブドメイン・ポート番号が異なっていても、eTLD+1が一致すれば、Same-siteになります。
最新の仕様では、Same-siteの条件にスキームが含まれるようになりました。
Same-siteとCross-siteの具体例
以下にSame-siteとCross-siteの具体例を説明します。
https://example.com
とhttps://example.com/about
- eTLD+1(
example.com
)が一致しているため、Same-siteとみなされます。
- eTLD+1(
https://blog.example.co.jp
とhttps://shop.example.co.jp
- サブドメインが異なります(
blog
とshop
)が、eTLD+1(example.co.jp
)が一致しているため、Same-siteとみなされます。
- サブドメインが異なります(
https://example.com:80
とhttps://example.com:443
- ポート番号が異なります(
80
と443
)が、eTLD+1(example.com
)が一致しているため、Same-siteとみなされます。
- ポート番号が異なります(
https://example.com
とhttps://anotherexample.com
- eTLD+1が異なる(
example.com
とanotherexample.com
)ので、Cross-siteとみなされます。
- eTLD+1が異なる(
https://example.com
とhttps://example.co.jp
- eTLD+1が異なる(
example.com
とexample.co.jp
)ので、Cross-siteとみなされます。
- eTLD+1が異なる(
https://example.com
とhttp://example.com
- スキームが異なる(
https
,http
)ので、Cross-siteとみなされます。
- スキームが異なる(
Same-originとCross-originの違い
Same-origin(同一オリジン)となる条件を以下に示します。以下の条件が満たされない場合、Cross-origin(異なるオリジン)になります。
Same-originの条件
- スキーム(
https,
http
)が一致すること - ホストが一致すること
- ポート番号が一致すること
Same-originとCross-originの具体例
以下にSame-originとCross-originの具体例を説明します。
https://example.com
とhttps://example.com/about
- スキーム(
https
)、ホスト(example.com
)、ポート番号(デフォルトだと443
です)がすべて一致しているため、Same-originとみなされます。
- スキーム(
https://example.com
とhttp://example.com
- スキームが異なる(
https
とhttp
)ので、Cross-originとみなされます。
- スキームが異なる(
https://example.com
とhttps://anotherexample.com
- ホストが異なる(
example.com
とanotherexample.com
)ので、Cross-originとみなされます。
- ホストが異なる(
https://blog.example.co.jp
とhttps://shop.example.co.jp
- ホストが異なる(
blog.example.co.jp
とshop.example.co.jp
)ので、Cross-originとみなされます。
- ホストが異なる(
https://example.com
とhttps://example.co.jp
- ホストが異なる(
example.com
とexample.co.jp
)ので、Cross-originとみなされます。
- ホストが異なる(
https://example.com:80
とhttps://example.com:443
- ポート番号が異なる(
80
と443
)ので、Cross-originとみなされます。
- ポート番号が異なる(
Same-site・Cross-site・Same-origin・Cross-originの違い
さまざまなURLを例にとり、Same-site・Cross-site・Same-origin・Cross-originの違いを表形式でまとめました。
URL1 | URL2 | 判定 |
https://example.com | https://example.com/about | Same-SIte →eTLD+1が一致しているため Same-origin →スキーム、ホスト、ポート番号が一致しているため |
https://blog.example.co.jp | https://shop.example.co.jp | Same-SIte →eTLD+1が一致しているため Cross-origin →ホストが異なるため |
https://example.com:80 | https://example.com:443 | Same-SIte →eTLD+1が一致しているため Cross-origin →ポート番号が異なるため |
https://example.com | https://anotherexample.com | Cross-site →eTLD+1が異なるため Cross-origin →ホストが異なるため |
https://example.com | https://example.co.jp | Cross-site →eTLD+1が異なるため Cross-origin →ホストが異なるため |
https://example.com | http://example.com | Cross-site →スキームが異なるため Cross-origin →スキームが異なるため |
Same-originはSame-siteよりも厳しい制約なので、Same-originならばSame-siteになります。Same-siteならば、Same-originになるとは限りません。
本記事のまとめ
この記事では『Same-site・Cross-site・Same-origin・Cross-originの違い』について、以下の内容を説明しました。
- TLDとeTLDとは
- Same-siteとCross-siteの違い
- Same-siteとCross-siteの具体例
- Same-originとCross-originの違い
- Same-originとCross-originの具体例
- Same-site・Cross-site・Same-origin・Cross-originの違い
お読み頂きありがとうございました。