【问题标题】:What is script tag's origin when it's from a third party?当脚本标签来自第三方时,它的来源是什么?
【发布时间】:2020-09-11 00:31:40
【问题描述】:

在 MDN 中的 document.cookie 域部分它说

如果未指定,则默认为当前文档位置的主机部分

域必须与 JavaScript 源的域匹配。将 cookie 设置为外部域将被静默忽略。 link

现在,如果您加载第三方脚本,也就是说,它来自 xyz.com 而不是 yourdomain.com,并且这个加载的脚本设置了一个 cookie 并且没有指定域。然后它将在yourdomain.com 上设置一个cookie。但是,第二条规则说域必须匹配脚本来源。脚本的来源是xyz.com,它在域yourdomain.com上设置cookie。

这是矛盾的吗?我是不是误会了什么?

我已经确认,是的,第三方脚本实际上可以修改主机页面的 cookie。

【问题讨论】:

    标签: javascript cookies


    【解决方案1】:

    将根据所请求资源的 URL 设置带有 HTTP Set-Cookie 标头的 cookie(无论该资源是 HTML 文档、脚本、图像还是其他内容)。

    使用客户端 JS (document.cookie) 设置的 cookie 将根据脚本运行它的 HTML 文档的 URL 进行设置(即使 JS 加载时带有指向不同主机名的 src 属性)。

    脚本来源是托管脚本的 HTML 文档,而不是脚本的 URL。

    【讨论】:

    • 脚本来源是托管脚本的 HTML 文档...hmmmm 听起来有问题,但只有这样才能使一切正常
    • 这个有来源吗,为什么脚本原点不是加载脚本的地方?
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多