发送Range请求时,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, 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也不会返回标头,但这是chrome邮件列表中已知的错误,但我可以先发出一个get请求来了解文件大小)

我在上一个项目中遇到了类似的问题。以下是我所做的:

1) 在服务器端处理返回访问控制头的OPTIONS请求,如:

访问控制允许来源:*访问控制允许方法:POST、OPTIONS访问控制最大年龄:1000访问控制允许标头:来源、内容类型、接受

2) 在服务器上处理POST方法并添加标题

访问控制允许来源:*

3) 在javascript:中

jQuery.ajax({url:gate,类型:"POST",数据:JSON.stringfy(post_data),contentType:"application/json;charset=UTF-8",crossDomain:true,成功:函数(数据){//},});

希望它能帮助

相关内容

  • 没有找到相关文章

最新更新