V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tousfun
V2EX  ›  前端开发

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

  •  
  •   tousfun · 2021-10-01 23:51:57 +08:00 · 1625 次点击
    这是一个创建于 928 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    图一

    图二

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

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

    比如 A 和 B 两个网站都用 script 标签引用的百度的广告 js 文件,百度就能通过第三方 cookie 知道你访问了 A 后又访问了 B,然后就可以跟踪你了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1776 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:35 · PVG 00:35 · LAX 09:35 · JFK 12:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.