Same-site・Cross-site・Same-origin・Cross-originの違いについて!

この記事では『Same-siteCross-siteSame-originCross-originの違い』について、

  • TLDとeTLDとは
  • Same-siteCross-siteの違い
    • Same-siteCross-siteの具体例
  • Same-originCross-originの違い
    • Same-originCross-originの具体例
  • Same-site・Cross-site・Same-originCross-originの違い

などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。

TLDとeTLDとは

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(同一サイト)になる条件を以下に示します。以下の条件が満たされない場合、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に相当します。
  • スキーム(https, http)が一致すること

サブドメイン・ポート番号が異なっていても、eTLD+1が一致すれば、Same-siteになります。

最新の仕様では、Same-siteの条件にスキームが含まれるようになりました。

Same-siteとCross-siteの具体例

以下にSame-siteCross-siteの具体例を説明します。

  • https://example.comhttps://example.com/about
    • eTLD+1(example.com)が一致しているため、Same-siteとみなされます。
  • https://blog.example.co.jphttps://shop.example.co.jp
    • サブドメインが異なります(blogshop)が、eTLD+1(example.co.jp)が一致しているため、Same-siteとみなされます。
  • https://example.com:80https://example.com:443
    • ポート番号が異なります(80443)が、eTLD+1(example.com)が一致しているため、Same-siteとみなされます。
  • https://example.comhttps://anotherexample.com
    • eTLD+1が異なる(example.comanotherexample.com)ので、Cross-siteとみなされます。
  • https://example.comhttps://example.co.jp
    • eTLD+1が異なる(example.comexample.co.jp)ので、Cross-siteとみなされます。
  • https://example.comhttp://example.com
    • スキームが異なる(https, http)ので、Cross-siteとみなされます。

Same-originとCross-originの違い

Same-originとCross-originの違い

Same-origin(同一オリジン)となる条件を以下に示します。以下の条件が満たされない場合、Cross-origin(異なるオリジン)になります。

Same-originの条件

  • スキーム(https, http)が一致すること
  • ホストが一致すること
  • ポート番号が一致すること

Same-originとCross-originの具体例

以下にSame-originCross-originの具体例を説明します。

  • https://example.comhttps://example.com/about
    • スキーム(https)、ホスト(example.com)、ポート番号(デフォルトだと443です)がすべて一致しているため、Same-originとみなされます。
  • https://example.comhttp://example.com
    • スキームが異なる(httpshttp)ので、Cross-originとみなされます。
  • https://example.comhttps://anotherexample.com
    • ホストが異なる(example.comanotherexample.com)ので、Cross-originとみなされます。
  • https://blog.example.co.jphttps://shop.example.co.jp
    • ホストが異なる(blog.example.co.jpshop.example.co.jp)ので、Cross-originとみなされます。
  • https://example.comhttps://example.co.jp
    • ホストが異なる(example.comexample.co.jp)ので、Cross-originとみなされます。
  • https://example.com:80https://example.com:443
    • ポート番号が異なる(80443)ので、Cross-originとみなされます。

Same-site・Cross-site・Same-origin・Cross-originの違い

さまざまなURLを例にとり、Same-siteCross-siteSame-originCross-originの違いを表形式でまとめました。

URL1URL2判定
https://example.comhttps://example.com/aboutSame-SIte
→eTLD+1が一致しているため
Same-origin
→スキーム、ホスト、ポート番号が一致しているため
https://blog.example.co.jphttps://shop.example.co.jpSame-SIte
→eTLD+1が一致しているため
Cross-origin
→ホストが異なるため
https://example.com:80https://example.com:443Same-SIte
→eTLD+1が一致しているため
Cross-origin
→ポート番号が異なるため
https://example.comhttps://anotherexample.comCross-site
→eTLD+1が異なるため
Cross-origin
→ホストが異なるため
https://example.comhttps://example.co.jpCross-site
→eTLD+1が異なるため
Cross-origin
→ホストが異なるため
https://example.comhttp://example.comCross-site
→スキームが異なるため
Cross-origin
→スキームが異なるため

Same-originSame-siteよりも厳しい制約なので、Same-originならばSame-siteになります。Same-siteならば、Same-originになるとは限りません。

本記事のまとめ

この記事では『Same-siteCross-siteSame-originCross-originの違い』について、以下の内容を説明しました。

  • TLDとeTLDとは
  • Same-siteCross-siteの違い
    • Same-siteCross-siteの具体例
  • Same-originCross-originの違い
    • Same-originCross-originの具体例
  • Same-site・Cross-site・Same-originCross-originの違い

お読み頂きありがとうございました。