在 RFC 6265 中第 7.1 节, 它说:
特别令人担忧的是所谓的“第三方” Cookie。在呈现 HTML 文档时,用户代理通常会向其他服务器(例如广告网络)请求资源。即使用户从未直接访问过服务器,这些第三方服务器也可以使用 Cookie 来跟踪用户。
例如,如果用户(使用同一台计算机和相同的 Web 浏览器软件,IE/Chrome 等)访问包含第三方(P)内容的网站(A.com),然后访问包含同一第三方(P)内容的另一个网站(B.com),则第三方可以追踪两个站点之间的用户。
我很好奇,这是什么意思在两个网站之间跟踪用户?
具体来说……
- 假设我是那个用户,
- A.com的html包含一个<img>标签,从服务器P抓取图像,B.com也做了同样的事情;
- 我早上访问 A.com 然后晚上访问 B.com;
通过在我的计算机上存储 cookie,P 知道我在早上和晚上都有浏览网页的行为(毫无疑问),但P 能知道我早上浏览的是 A.com(而不是 B.com)吗?
答案1
好吧,我发现了,正如https://en.wikipedia.org/wiki/HTTP_cookie#Third-party_cookie。
对于像这样的简单 index.html:
<!doctype html>
<body>
<p>An image below:</p>
<img src="https://chjfth.github.io/web/res/bg-pagehead.jpg"/>
</body>
当在 Web 浏览器中查看它时,它会发送这样的 HTTP 请求来获取图像文件:
GET https://chjfth.github.io/web/res/bg-pagehead.jpg HTTP/1.1
Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
Referer: http://10.22.3.84:5000/seeimage/index.html
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: chjfth.github.io
If-Modified-Since: Fri, 13 Sep 2019 11:24:09 GMT
If-None-Match: "5d7b7c59-3534"
DNT: 1
Connection: Keep-Alive
注意这一Referer: http://10.22.3.84:5000/seeimage/index.html
行,它告诉第三方(chjfth.github.io)哪个网页正在获取图像文件。