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

标签 ajax cross-domain

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

“不安全的 JavaScript 尝试从具有 URL http://foo.somedomain.com/dir/page.html 的框架访问具有 URL http://bar.somedomain.com/otherdir/otherpage.html 的框架。域、协议(protocol)和端口必须匹配”

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

最佳答案

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

  • 同一主机
  • 同一个端口
  • 相同协议(protocol)

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

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

    Reference

    关于ajax - 我认为允许跨子域 AJAX 请求,但这个 Chrome 错误似乎表明不是这样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025061/

    相关文章:

    php - Symfony ajax 响应但带有 header : HTTP/1. 0 200 OK Cache-Control: no-cache Date

    javascript - Codeigniter 中 ajax 上传的奇怪 MIME 类型

    jquery - PhoneGap 和对 RESTful API 的不同 HTTP 方法请求

    google-analytics - Google Analytics 跨域转化跟踪和 AdWords 广告事件归因

    javascript - 在 C++ REST SDK 的 http_listener 上添加 Access-Control-Allow-Origin

    javascript - 如何从 URL 获取 JSON

    JavaScript 不在 PHP 加载的 HTML 上运行

    javascript - 从另一个实时页面共享 <div>

    javascript - Apache Cordova(Phonegap): is jsonp needed for cross-site scripting?

    asp.net - 跨浏览器脚本代理