如何在远程域提供的脚本中设置第 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.com
为a.mydomain.com
、b.mydomain.com
、c.mydomain.com
创建cookie。
您不能从 anotherdomain.com
为 mydomain.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 中设置第一个应用程序