我认为允许跨子域AJAX请求,但这个Chrome错误似乎表明不是这样

Mat*_*att 16 ajax cross-domain

我知道出于安全原因不允许跨域请求,但我的印象是只有顶级域名需要匹配,不同的子域名都可以.但是,我从Chrome 7收到此错误:

"不安全的JavaScript尝试与URL访问框架http://foo.somedomain.com/dir/page.html从框架与URL http://bar.somedomain.com/otherdir/otherpage.html.域,协议和端口必须比赛"

这些类型的请求的具体规则是什么?

cod*_*orn 19

简而言之,同源政策的规则是:

  • 同一主持人
  • 同一个港口
  • 相同的协议

在您的示例中,您违反了主机规则,因为不同的子域可能指向不同的主机/ IP,即使第二级域是相同的.

如果你没有其他可能性,你可以尝试在你的ajax请求中使用JSONP; 这没有SOP.

参考


Tej*_*eni 5

任何浏览器都不允许跨子域请求.但有一些方法,如CORS,使用iframes,设置document.domain使其工作(虽然有一些限制).