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

时间:2010-10-26 15:09:42

标签: ajax cross-domain

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

“不安全的JavaScript尝试从包含网址http://foo.somedomain.com/dir/page.html的网址访问包含网址http://bar.somedomain.com/otherdir/otherpage.html的框架。域名,协议和端口必须匹配”

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

2 个答案:

答案 0 :(得分:19)

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

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

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

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

Reference

答案 1 :(得分:5)

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