Cookieの仕様について調べているが、 どうもFirst Party Cookieと、Third Party Cookieってのがあるらしい。
普通のCookie、表示して表示しているページと同じドメイン(domainAとする)のCookieはFirst Party Cookieというらしい。
それに対して、表示しているページと違うドメイン(domainBとする)のCookieをThird Party Cookieというらしい。 主に広告などでユーザをトラッキングするために使われている様子。
通常、Cookieは、同じドメイン内でしか設定や送信ができないはずなので、 最初は、「表示しているページと違うドメイン」の意味がわからなかった。
よく考えてみると、表示しているdomainAのindex.htmlから、 domainBのscript.jsを読み込むような場合には、同時にdomainBのCookieを設定したり読み込んだりすることはできることがわかった。 domainBのscript.jsを読み込む場合に、「レスポンスのヘッダ」*1でCookieを設定してやればよい。jsじゃなくてもcssとかpngとかでも同じ。
Javascriptで設定するCookieは?
ちなみに、domainB(表示しているページと異なるドメイン)のjavascriptを読み込んで、以下のように実行時にCookieを設定してもThird Party Cookieにはならない。
document.cookie = 'key=secret';
このスクリプトは読み込まれたあとに、domainAで実行される*2ので、First Party Cookieになる。
Third Party Cookieを使ったトラッキング
ここで、Cookieの基本を確認する。
Cookieは設定されたドメインと同じドメインにしか送信されない。 - domainAのCookieはdomainAのリクエスト時にのみ送信される。 - domainBのCookieはdomainBのリクエスト時にのみ送信される。
しかし以下のような場合は、異なるドメインをまたいでCookieが送信されているような状況が起きる。
- domainAを表示中にdomainBにリクエストする場合は、domainBにdomainBのCookieが送信される。
- domainCを表示中にdomainBにリクエストする場合にも、domainBにdomainBのCookieが送信される。
こういう仕組みでトラッキングがされている様子。なるほどー。 はてなブックマークのボタンとかGoogle Analyticsのscriptとかそういうのでトラッキングできますね。 CDNとかでもできそう。
ただ、Third Party Cookieへの風当たりは強いようなので、今後は廃止されていくのかも?