我正在通过Google跟踪代码管理器中的代码加载第三方js文件/脚本。
此脚本需要从自己的域中设置cookie,但是所有cookie都被设置为主机域的第一方,这意味着它们不会被转移到服务器。
我也正在开发第三方脚本,因此可以直接访问它,目前该脚本中用于编写cookie的代码基于:
const host = (window && window.location && window.location.hostname) || '';
const parts = host.split('.');
const COOKIE_DOMAIN = parts.length > 1 ? `;domain=.${parts.slice(-2).join('.')}` : '';
我认为这可能会从原点获取Cookie,但会将其设置为主机。
我试图将COOKIE_DOMAIN更改并硬编码到我的服务器地址,但这似乎不起作用,即没有设置cookie。
编辑:从标题中删除对标记管理器的引用,因为它没有过多的相关性。
更新:所以当我从第三方服务器加载脚本标签时,它似乎基本上成为第一方 - 这使得很难从原始域设置cookie。
答案 0 :(得分:2)
在页面中运行的JavaScript无法为其他域设置Cookie。 document.cookie
是指当前页面的Cookie。
如果要为其他域设置Cookie,则必须使用HTTP标头(例如,当远程域提供.js
文件时)。