【发布时间】:2012-04-07 00:57:04
【问题描述】:
我正在使用 jQuery 的 ajax 调用来发出 CORS 请求,如果我设置了它就可以工作
var headers = {};
但由于我要获取的内容相当大,我想发送范围标头。
(所有这些都经过测试并在同一个域中工作)
所以,当我这样做时:
var headers = {"Range":"bytes=" + start + "-" + end};
$.ajax({
url:url,
type:type,
headers:headers,
dataType:dataType,
success:function (data, status, jqXHR) {
//
}, error:function (data, status, jqXHR) {
//
}
});
对于我们的其他域,请求在最新的 chrome 和 FF 中被取消。
如果我关闭标头,一切正常,但随后我得到数兆字节的数据,而浏览器无法处理/解析该数量的数据。
这是来自服务器的标题(我控制它,所以我可以编辑它)
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: OPTIONS, GET, POST
Access-Control-Allow-Headers: Content-Type, Authorization, Accept, Range, Origin
Access-Control-Expose-Headers: Content-Range
Access-Control-Max-Age: 3600
我是不是做错了什么,或者通过 CORS 发送范围请求尚未在最新浏览器中正确实现?
(旁注,即使我在 Expose-Headers 中允许它们,chrome 也不会返回标题,但这是 chromium 邮件列表中已知的错误,但我可以先发出一个获取请求以找出文件大小)
【问题讨论】:
-
您是否尝试过设置服务器的标头以返回对
Access-Control-Allow-Origin而不是*提出请求的实际域? -
是您请求的可用于测试的跨域网址
标签: jquery ajax http-headers cross-domain cors