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