无法访问IE中其他域设置的cookie

时间:2011-12-08 16:00:50

标签: javascript jquery cookies

我正在使用cookie.js库

从本地HTML文件设置cookie
$.cookies.set("Demo","Dummy Data");

我想从另一个域尝试使用下面的代码获取cookie值

alert($.cookies.get("Demo")); 

但它让我无效 请帮帮我

5 个答案:

答案 0 :(得分:9)

这是设计的。您只能获取当前域中设置的cookie的值。

由于Web浏览器内置了安全措施,因此无法满足您的要求。

最好的选择是制作一个可以跨域的JSONP AJAX请求。

答案 1 :(得分:3)

您无法读取其他域设置的Cookie。

答案 2 :(得分:3)

看看这个关于跨域cookie的帖子: Cross domain cookies

基本上,这是一项安全功能。如果domain.com设置了cookie,则domain1.com不应该访问它,否则您可以获得任何网站的身份验证令牌和其他内容。

答案 3 :(得分:2)

不幸的是,它返回null,因为无法访问来自其他域的Cookie。这是一项安全功能。

例如,考虑一些网站的会话cookie。如果我可以通过另一个域上的JS访问该cookie,那么我的恶意网站(我欺骗您访问)可以获取该会话信息并将其提供给一些黑客。然后黑客更有可能劫持你的会话。通常情况下,没有其他措施来确保所使用的会话由同一个人使用,因此所有黑帽所需要的是ID和瞧 - 您访问网站时的总访问权限。假设您在一个窗口登录到您的银行,然后在另一个窗口打开我的黑客邪恶网站...现在我可以访问您的银行帐户。糟糕!

所以 - 这是不可能的,而且有充分的理由!

答案 4 :(得分:0)

实际上,由于SOP(Same Origin Policy),这是不可能的。

您可以使用跨域方法解决此问题,例如:postMessage,JSONP,xmlHttpRequest或iframe等。

但是,您必须关注安全问题。此播客解释how to breack cross domain barrier。以下帖子也为您的问题提供解决方案。

Stackoverflow帖子

  1. How do I set cookies from outside domains inside iframes in Safari?;
  2. Resizing an iframe based on content;