如何在远程域提供的脚本中设置第 3 方 cookie?

Posted

技术标签:

【中文标题】如何在远程域提供的脚本中设置第 3 方 cookie?【英文标题】:How can I set a 3rd party cookie in a script served from remote domain? 【发布时间】: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。 【参考方案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'>

【讨论】:

以上是关于如何在远程域提供的脚本中设置第 3 方 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

在 GitLab 中设置第一个 root 密码的单行控制台命令

如何在熊猫中设置第一列和第一行作为索引?

unity 3D中设置第一人称视角并且可以旋转视角,想3D游戏那样怎么弄

如何在 Zend Framework 2 中设置第一个应用程序

如何在 Access 2007 中设置第一个连续组合框不可见?

如何在添加文本“Uhr”的String中设置第三个运算符?