在不同的主机上读取cookie
我有两个网站 – 都是我的项目。 在第二站,我需要检查用户是否在站点1登录。 我想这样做我应该创建一个脚本,将cookie放入iframe的主体,然后读取站点2上的iframe内容。 但我不能。
这是我为测试目的而制作的代码:
http://jsbin.com/oqaza/edit
我收到一个错误,说:
“从获取属性HTMLDocument.nodeType的权限被拒绝。”
Iframe文档受同源策略约束 – 您无法从另一台主机上的页面访问一台主机上的内容。 AJAX请求也是如此。
对于现代浏览器,一种解决方案是跨文档消息传递 。
正如其他人所提到的,出于安全考虑,使用cookie并不是一个好的选择。 你可以通过将一个登录用户反馈到另一个站点,检查cookie,然后将它们回到他们所在的页面并使用指示状态的查询字符串来实现,但这至少可以说是笨拙的。
更好的方法是在site1上创建一个Web服务(如果你是.Net MVC,则为MVC JsonResult),它可以响应来自site2的关于登录状态的AJAX请求。
我终于明白了。 通常有像“OpenID”这样的解决方案(甚至在SO上使用),但我发现,JSONP是跨域读取cookie的最简单方法:)