发送范围请求时,jQuery CORS请求不起作用

前端之家收集整理的这篇文章主要介绍了发送范围请求时,jQuery CORS请求不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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

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){
            //
        },});

希望会有所帮助

猜你在找的jQuery相关文章