2012-03-22 89 views
10

当我使用jQuery的Ajax调用,使CORS请求及其但是工作,如果我设置jQuery的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发送范围请求尚未在最新的浏览器正确实施?

(侧面说明,也Chrome是没有返回头即使我让他们在揭露报头,但被称为铬邮件列表上的错误,但我可以先作一个GET请求,找出文件大小)

+1

您是否曾尝试设置服务器的标头以返回发出“Access-Control-Allow-Origin”而不是'*'请求的实际域? – 2012-03-28 19:22:43

+0

是的,没有任何变化 – kodisha 2012-04-03 10:35:02

+0

是你正在请求的跨域URL可用来测试 – 2012-04-03 16:37:20

回答

9

我在处理最后一个项目时遇到了类似的问题。 以下是我做的:在服务器句柄POST方法

 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, OPTIONS 
Access-Control-Max-Age: 1000 
Access-Control-Allow-Headers: Origin, Content-Type, Accept 

2),并添加报头

 
Access-Control-Allow-Origin: * 

在服务器侧柄OPTIONS 1)请求返回访问控制报头状3)javascript:

 
jQuery.ajax({ 
     url: gate, 
     type: "POST", 
     data: JSON.stringify(post_data), 
     contentType: "application/json; charset=UTF-8", 
     crossDomain: true, 
     success: function(data){ 
      // 
     }, 
    }); 

希望能帮到