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

标签 jquery ajax http-headers cross-domain cors

我正在使用 jQuery 的 ajax 调用来发出 CORS 请求,如果我设置它就会工作

var headers = {};

但是由于我想要获取的内容相当大,我想发送范围 header 。

(这全部经过测试并在同一域中工作)

所以,当我这样做时:

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 中被取消。

如果我关闭 header ,一切正常,但随后我会收到兆字节的数据,并且浏览器无法处理/解析这么多数据。

这是来自服务器的 header (我控制它,所以我可以编辑它)

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 也不会返回 header ,但这是 chromium 邮件列表上的已知错误,但我可以先发出一个 get 请求来找出文件大小)

最佳答案

我在处理上一个项目时遇到了类似的问题。 这是我所做的:

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

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 方法并添加 header

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 CORS 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822709/

相关文章:

javascript - 如何在 Rails 中将 javascript/jQuery 设置从一个页面传递到另一个页面?

http - 通过移动互联网连接检索时网站已更改

node.js - 如何获取当前在 Node/Express 中设置的 HTTP 响应 header 列表?

javascript - 使 jqGrid 多选选择在分页、工具栏搜索或过滤器之后持续存在

javascript - 有没有具有排序功能的多选插件?

ajax - 带有 auth 的 Laravel api 路由

javascript - 如何设计有很多ajax调用的页面?

javascript - 使用 Ajax 加载页面并将数据发送到页面

c# - ServiceStack、CORS 和 OPTIONS(无 Access-Control-Allow-Origin header )

php - 如何在滚动时使用 php 和 jquery 加载结果?