我原以为允许跨子域AJAX请求,但这个Chrome错误似乎表明情况并非如此

我原以为允许跨子域AJAX请求,但这个Chrome错误似乎表明情况并非如此,ajax,cross-domain,Ajax,Cross Domain,我知道出于安全原因,跨域请求是不允许的,但我的印象是,只有顶级域需要匹配,不同的子域也可以。然而,我从Chrome 7中得到了这个错误: 不安全的JavaScript试图从具有URL的帧访问具有URL的帧。域、协议和端口必须匹配 这些类型请求的具体规则是什么?任何浏览器中都不允许跨子域请求。但也有一些方法,如使用iframes,设置document.domain,使其工作(尽管有一些限制)。简而言之,同源策略的规则是: 同一主机 同一端口 相同协议 在您的示例中,您违反了主机规则,因为不同的

我知道出于安全原因,跨域请求是不允许的,但我的印象是,只有顶级域需要匹配,不同的子域也可以。然而,我从Chrome 7中得到了这个错误:

不安全的JavaScript试图从具有URL的帧访问具有URL的帧。域、协议和端口必须匹配


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

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

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

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

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


我并没有把手指指向chrome,我只是指出是chrome给了我这个信息丰富的答案,这实际上质疑了我对规则的理解:)