kod*_*sha 10 ajax jquery cross-domain http-headers cors
我正在使用jQuery的ajax调用来发出CORS请求,如果我设置它的工作
var headers = {};
Run Code Online (Sandbox Code Playgroud)
但是,由于我想要获得的内容相当大,我想发送范围标题.
(这都经过测试并在同一个域中工作)
所以,当我这样做时:
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) {
//
}
});
Run Code Online (Sandbox Code Playgroud)
对于我们的其他域,请求在最新的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
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者通过CORS发送范围请求还没有在最新的浏览器中正确实现?
(旁注,即使我在Expose-Headers中允许它们,Chrome也不会返回标题,但这是铬邮件列表中的已知错误,但我可以首先获取一个请求以查找文件大小)
我在上一个项目工作时遇到了类似的问题.这是我做的:
1)在服务器端处理OPTIONS请求返回Access-Control标头,如:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, OPTIONS Access-Control-Max-Age: 1000 Access-Control-Allow-Headers: Origin, Content-Type, Accept
2)在服务器上处理POST方法并添加标题
Access-Control-Allow-Origin: *
3)在javascript中:
jQuery.ajax({
url: gate,
type: "POST",
data: JSON.stringify(post_data),
contentType: "application/json; charset=UTF-8",
crossDomain: true,
success: function(data){
//
},
});
希望它会有所帮助