图一是我在taobao.com
下发现的一些第三方 cookie 。图二是访问taobao.com
时发送的一个跨域请求,响应头中set-cookie
的 domain=.mmstat.com
。所以为什么这个 cookie 能成功设置呢?
1
coolan 2021-10-02 01:27:35 +08:00
有点兴趣,稍微查了查,其实你都知道第三方 cookie 这个词了,那就很多资料了。这个 cookie 是用 javascript 前端直接请求 mm.stat.com 的这个第三方地址,通过响应来 set 的,并没有跨域。因为它并没有请求 taobao.com 来响应 set 一个 mm.stat.com 的 cookie 。 另外 https://zhuanlan.zhihu.com/p/131256002 可能有帮助。多查查,很多资料。
|
2
tousfun OP @coolan 也就是说 cookie 的 domain 不允许设置跨站的域名, 这个 domain 的域名是相对于这个 http 请求的域名来说的,而不是相对于我当前浏览的页面网址来说的。 所以说,mmstat.com 请求后端返回的 cookie domain 是 mmstat 这并没有跨站
|
3
eason1874 2021-10-02 02:58:04 +08:00
我这里不能复现,Chrome 拦截了 mmstat 的请求,提示:Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 application/json 的跨域响应
我怀疑是你在 Chrome 设置了允许第三方,也可能是扩展行为,你用无扩展的无痕窗口测试下。 |
4
coolan 2021-10-02 03:03:24 +08:00 via Android
cookie 有两种设置方式,由服务器设置时,服务器网页的 URL 跟响应的 cookie 里的 domain 不能跨域;通过前端页面 js 设置时,前端页面 URL 跟 cookie 的 domain 也不可以跨域。
|
5
muzuiget 2021-10-02 05:54:05 +08:00
那个并不是“跨域请求”,而是用 script/style/img 标签这种方式引用第三方资源。
比如 A 和 B 两个网站都用 script 标签引用的百度的广告 js 文件,百度就能通过第三方 cookie 知道你访问了 A 后又访问了 B,然后就可以跟踪你了。 |