代码之家  ›  专栏  ›  技术社区  ›  Matt

我认为跨子域Ajax请求是允许的,但是这个chrome错误似乎表明了另外一种情况。

  •  16
  • Matt  · 技术社区  · 15 年前

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

    “不安全的javascript尝试使用URL访问帧 http://foo.somedomain.com/dir/page.html 从带URL的框架 http://bar.somedomain.com/otherdir/otherpage.html . 域、协议和端口必须匹配“

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

    2 回复  |  直到 14 年前
        1
  •  18
  •   codeporn    15 年前

    简而言之,同一原产地政策的规则是:

    • 同一主机
    • 同一端口
    • 相同的协议

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

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

    Reference

        2
  •  5
  •   Teja Kantamneni    15 年前

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