【问题标题】:How can I set a 3rd party cookie in a script served from remote domain?如何在远程域提供的脚本中设置第 3 方 cookie?
【发布时间】:2019-04-17 16:52:44
【问题描述】:

这可能很简单,但我从未使用过 cookie,这个问题让我有点困惑。

假设我有一个脚本。它被上传到远程 CDN。 我通过将其放入来使用它

<script src=http://link-to-script.com/script.js></script>.

然后,我使用这些标签加载 html 代码并在 localhost 上运行,以便它从 CDN 获取脚本。 现在,我使用脚本的一些函数通过 document.cookie 在其中设置一个 cookie。在这一部分中,我希望不将 cookie 设置在 localhost 域(现在就是这种情况)上,而是设置在从(CDN)提供脚本的域上。我想要第 3 方 cookie 而不是第 1 方。

最好的方法是什么?你能指出我正确的方向吗?

【问题讨论】:

  • 您不能在另一个域上设置 cookie,这是一个安全风险。
  • 您不能使用第三方 cookie。浏览器不允许这样做。
  • 加载脚本后,它将在包含页面的上下文中运行。脚本来自的位置不相关,并且无法在该域中设置 cookie。
  • 我知道,但它是我提供脚本的域,所以我认为它可以让我对此有所控制?我不想在某人的域上设置我无权使用的 cookie。

标签: javascript cookies


【解决方案1】:

你可以参考Can a 3rd party js script write cookies?

要写入第三方 cookie(即 cookie 在第三方的域中)要求 cookie 在从该第三方下载的标题中发送,而不是写入通过JS代码。

在请求头中写下代码,MDN参考链接https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

Set-Cookie: <cookie-name>=<cookie-value> 

【讨论】:

    【解决方案2】:

    您只能为当前域及其子域设置cookie。

    举例:

    您可以从mydomain.coma.mydomain.comb.mydomain.comc.mydomain.com 创建cookie。

    不能anotherdomain.commydomain.com 创建 cookie。


    跨域 Cookie

    但如果您想为另一个域创建 cookie,您需要重定向到该特定 URL 并从该站点创建 cookie。

    如果你想为另一个域创建cookie,你可以试试这个,

    <img src='http://www.anotherdomain.com/createCookie.php'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 2023-03-26
      • 2015-07-16
      • 2011-07-19
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      相关资源
      最近更新 更多