有页面domain.com,其中包含来自server.com的javascript。
<script src="https://server.com/script.js"></script>
在此脚本中,我可以轻松地将 cookie 设置为domain.com:
$.cookie('name', {
data : data
}, {
path: '/',
expires: 10,
domain: 'domain.com'
});
我需要在 server.com 上设置 cookie 并稍后读取它。我读到,如果我从中加载内容,我可以设置第三方 cookie。为什么我不能像下面这样设置 cookie?
$.cookie('name', {
data : data
}, {
path: '/',
expires: 10,
domain: 'server.com'
});
最佳答案
首先,了解第一方 Cookie 和第 3 方 Cookie 之间的区别非常重要。
第一方 Cookie 是您设置为与当前页面相同的域的 Cookie。只要浏览器中启用了cookie,您就可以设置该cookie,并且只要您所在的页面与cookie的域匹配并且cookie中设置的路径与页面的路径兼容,您就可以读取它你是其中之一。任何其他域的页面都无法读取此 cookie。
第三方 Cookie 是您为与当前所在页面的域不同的域设置的 Cookie。浏览器中有一个单独的安全设置,可以决定是否允许您设置第 3 方 cookie。因此,如果您访问 aaa.com,您可以设置一个用于 bbb.com 页面的 cookie。即使您可以为不同的域(例如 bbb.com)设置第 3 方 cookie,您也无法从 aaa.com 的页面读取该 bbb.com cookie。只有 bbb.com 的页面可以读取该 cookie。
此功能有时被广告服务用于跟踪目的,以帮助跨多个域跟踪给定用户。它还可用于帮助在使用多个域的合作站点之间共享凭据。
重要的是要理解,第一方 Cookie 和第三方 Cookie 之间的区别仅在某些代码尝试设置 Cookie 时存在,并且该区别用于将不同的安全规则应用于 Cookie 的创建。一旦创建 cookie,它就与任何其他 cookie 相同。您永远无法从其他域读取 cookie,只有标记有与当前页面域匹配的域的 cookie 才会发送到该服务器或允许通过 Javascript 从该页面读取。第三方 cookie 的概念实际上只是一种特定情况,您可以为另一个域设置 cookie。您永远无法从另一个域读取 cookie。
关于javascript - 使用 jquery cookie 的第三方 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474873/