www.example.comに、ASP.NETサイトmyapp.othersite.comを指すIFRAMEがあるサイトがあるとします。これにより、セッションおよびサードパーティのCookieで問題が発生します。
埋め込みアプリをmyapp.example.comに移動した場合でも、セッションCookieは別のサブドメインであるため、サードパーティのCookieとしてカウントされますか?
Cookieが異なるベースドメイン(example.com
またはであるベースドメインexample.co.uk
)からのものである場合、Cookieはサードパーティと見なされるように見えますが、同じベースドメインの異なるサブドメインからのものである場合はそうではありません。
myapp.example.com
ドメインがに埋め込まれている場合は、ドメインでCookieを設定できます。myapp.example.com
www.example.com
別のサブドメインからCookieを読み取る必要がない限りmyapp.example.com
、ドメインにCookieを設定する必要はありません。.example.com
[Firefox、Chrome(サードパーティのCookieがブロックされている)およびSafariでテスト済み][ ThirdPartyUtil.IsThirdPartyInternalはFirefoxでチェックされているようです]
ドメインにCookieを設定した場合.example.com
その場合、 www.example.comとwww.myapp.example.comからのCookieは同じと見なされます。
サードパーティのCookieとして扱われるCookieはありません。
ドメイン属性が問題のCookieに設定されていないと仮定すると、このシナリオでは、ホスト名が異なるため、実際にはサードパーティのCookieです。ただし、通常はサードパーティのCookieをブロックするブラウザは、ベースドメインが同じであるため、Cookieをブロックしません。したがって、その点では、サードパーティのCookieとしては扱われません。
これを知っているのは、ベースドメインが同じでサブドメインが異なる場合にサードパーティのCookieを正常に設定して読み取ることができたのに対し、Firefox、Chrome、およびMicrosoftEdgeの最新バージョンのブラウザ設定ではサードパーティのCookieがブロックされていたためです。これは、Cookieにドメイン属性が設定されていない場合でも当てはまりました。これは、Firefox、Chrome、およびMicrosoft Edgeが、同じベースドメインからのCookieをサードパーティのCookieと見なさないことを意味します。
私の方法論は次のとおりです。ベースドメインは同じですがサブドメインが異なる2つの異なるホスト名があります。それらの1つには2つのPHPファイルが含まれています。1つ目は、ランダムなCookie名を持ち、ドメイン属性を持たないCookieを設定し、Cookieの名前をJSONPとして返します。2番目はCookieの読み取りを試み、JSONPとしてtrueまたはfalseを返します。もう1つのホスト名には、AJAXを使用してCookieを設定する最初のPHPファイルを照会するHTMLファイルが含まれ、完了するとすぐにAJAXを再度使用してCookieの存在をテストする2番目のPHPファイルを照会します。先に進む前に、まずサードパーティのCookieがブラウザによってブロックされていることを確認しました。Firefox、Chrome、MicrosoftEdgeの3つのブラウザーをテストしました。
結論:リソースがCookieを設定し、リソースのベースドメインがWebサイトのベースドメインと同じであるが、サブドメインが異なる場合、一般的なブラウザはそれをサードパーティのCookieとして扱いません。