小白请教, cookie 的 domain 不允许设置跨站的域名,那为什么能在 chrome 的 application tab 中看到第三方 cookie?

2021-10-01 23:51:57 +08:00
 tousfun

图一是我在taobao.com 下发现的一些第三方 cookie 。图二是访问taobao.com时发送的一个跨域请求,响应头中set-cookiedomain=.mmstat.com。所以为什么这个 cookie 能成功设置呢?

图一

图二

1742 次点击
所在节点    前端开发
5 条回复
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 可能有帮助。多查查,很多资料。
tousfun
2021-10-02 02:36:16 +08:00
@coolan 也就是说 cookie 的 domain 不允许设置跨站的域名, 这个 domain 的域名是相对于这个 http 请求的域名来说的,而不是相对于我当前浏览的页面网址来说的。 所以说,mmstat.com 请求后端返回的 cookie domain 是 mmstat 这并没有跨站
eason1874
2021-10-02 02:58:04 +08:00
我这里不能复现,Chrome 拦截了 mmstat 的请求,提示:Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 application/json 的跨域响应

我怀疑是你在 Chrome 设置了允许第三方,也可能是扩展行为,你用无扩展的无痕窗口测试下。
coolan
2021-10-02 03:03:24 +08:00
cookie 有两种设置方式,由服务器设置时,服务器网页的 URL 跟响应的 cookie 里的 domain 不能跨域;通过前端页面 js 设置时,前端页面 URL 跟 cookie 的 domain 也不可以跨域。
muzuiget
2021-10-02 05:54:05 +08:00
那个并不是“跨域请求”,而是用 script/style/img 标签这种方式引用第三方资源。

比如 A 和 B 两个网站都用 script 标签引用的百度的广告 js 文件,百度就能通过第三方 cookie 知道你访问了 A 后又访问了 B,然后就可以跟踪你了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805611

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX