【发布时间】:2014-08-13 20:04:11
【问题描述】:
我正在尝试发出一个简单的跨域请求,而 Firefox 一直以这个错误阻止它:
跨域请求被阻止:同源策略不允许读取 [url] 处的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。 [网址]
它在 Chrome 和 Safari 中运行良好。
据我所知,我已经在我的 PHP 上设置了所有正确的标头以允许它工作。这是我的服务器响应的内容
HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html
我尝试过使用 Angular、jQuery 和一个基本的 XMLHTTPRequest 对象,如下所示:
var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()
...它适用于除 Firefox 之外的所有浏览器。有人可以帮忙吗?
【问题讨论】:
-
您能否提供所有请求和响应的完整跟踪?或者至少提供一个测试站点?如果网站访问远程源http、https、文件?
mozSystem不支持仅打包 firefox-os 应用程序的常规网站,因此请放弃该选项。 -
@nmaier 以 POST 而非 GET 形式发送时的标头:
Accept application/json, text/plain, */*Accept-Encoding gzip, deflateAccept-Language en-US,en;q=0.5Content-Length 35Content-Type application/x-www-form-urlencoded; charset=UTF-8Content-Type application/x-www-form-urlencoded; charset=UTF-8Host [url]Host [url]Origin [url]Referer [referrer url]987654333333333 错误: @ -
@nmaier 实际上,这似乎是我正在访问的网站上的安全证书的某种问题——Firefox 只是给出了一个虚假的错误。如果我将该站点添加到例外列表中,它可以正常工作。
标签: javascript firefox cors cross-domain