有域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'
});
答案 0 :(得分:18)
首先,了解第一方Cookie和第三方Cookie之间的差异非常重要。
第一方Cookie是您设置为与当前页面相同的域的Cookie。只要在浏览器中启用了cookie,您就可以设置该cookie,只要您所在的页面与cookie的域匹配并且cookie中设置的路径与页面路径兼容,您就可以将其读回。你是一个。任何其他域的页面都不能读取此cookie。
第三方Cookie是您为不同域设置的cookie,而不是您当前所在页面的域。浏览器中有一个单独的安全设置,用于确定您是否甚至可以设置第三方cookie。因此,如果您在aaa.com上,则可以设置适用于bbb.com页面的cookie。即使您可能能够为其他域设置第三方cookie,例如bbb.com,您也无法从aaa.com中的页面读取该bbb.com cookie 。只有来自bbb.com的页面才能读取该cookie。
此功能有时会用于广告服务的跟踪目的,以帮助跨多个域跟踪指定用户。它还可用于帮助在使用多个域的合作站点之间共享凭据。
重要的是要理解第一方cookie和第三方cookie之间的区别仅在某些代码尝试设置cookie时存在,并且该区别用于将不同的安全规则应用于cookie的创建。创建cookie后,它与任何其他cookie相同。您永远不能从其他域读取cookie,只有标记有与当前页面域匹配的域的cookie才会发送到该服务器,或者允许通过Javascript从该页面读取。第三方cookie的概念实际上只是一种特定情况,您可以设置另一个域的cookie。您永远不能从其他域读取cookie。