我正在使用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,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也不会返回标题,但这是铬邮件列表中的已知错误,但是我可以首先获得请求以找出文件大小)
解决方法
我在上一个项目工作时遇到类似的问题.
这是我做的:
这是我做的:
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
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){ // },});
希望会有所帮助