jQuery问题 - Same Origin阻止访问同域iFrame?

时间:2014-07-02 01:37:59

标签: jquery same-origin-policy

我试图将一些数据从server.com/sso/index.jsp提取到server.com/mobile /

我可以将我的iFrame包括在内:

var $ssoFrame= $( '<iframe id="sso" name="sso" style="width:0px; height:0px; border: 0px"    
src="/sso/index.jsp"></iframe>' );
$( ".someDiv" ).first().append( $ssoFrame);

我可以检查Chrome中的内容。但是,如果我在控制台中运行它:

$("#sso").contents();

我明白了:

SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://www.domain.com" from accessing a cross-origin frame.

我不确定我在这里丢失了什么 - 当它在同一台服务器上时,如何/为什么这是一个跨源请求(甚至在src中未指定域时调用) ?)。对/sso/index.jsp进行任何更改都将成为一场噩梦,所以我希望我可以通过这个iFrame分析其内容。我尝试使用$ .get并在那里被阻止了 - 这可能是.com / mobile / vs .com / sso / index.jsp的默认值上的http vs https不匹配吗?

欣赏任何想法!

萨姆

1 个答案:

答案 0 :(得分:0)

  

这是一项安全更新。如果攻击者可以修改一些文件   Web服务器(例如JS),他可以制作每个加载的页面   下载另一个脚本(例如键盘密码或   窃取您的SessionID并将其发送到自己的服务器。)

     

为避免这种情况,浏览器会检查同源策略

     

您的问题是浏览器正在尝试使用您的内容加载某些内容   另一个域上的脚本(带有Ajax请求)(或   子域)。为避免它(如果它在您自己的网站上),您可以:

查看Herehere