2012-03-22 30 views
10

Tôi đang sử dụng cuộc gọi ajax jQuery để thực hiện yêu cầu CORS và làm việc của mình nếu tôi đặtyêu cầu jQuery CORS không hoạt động khi gửi yêu cầu Phạm vi

var headers = {}; 

Nhưng vì nội dung mà tôi đang cố gắng để có được là khá lớn , tôi muốn gửi tiêu đề phạm vi.

(điều này là tất cả thử nghiệm và làm việc trong cùng một tên miền)

Vì vậy, khi tôi làm điều này:

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) { 

     // 
    } 
}); 

Để miền khác của chúng tôi, yêu cầu bị hủy bỏ vào chrome mới nhất, và FF.

Nếu tôi tắt tiêu đề, mọi thứ hoạt động, nhưng sau đó tôi nhận được megabyte dữ liệu và trình duyệt không thể xử lý/phân tích số lượng dữ liệu đó.

Dưới đây là tiêu đề từ máy chủ (i kiểm soát này, vì vậy tôi có thể chỉnh sửa nó)

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 

Did tôi làm điều gì sai, hoặc gửi yêu cầu nhiều hơn CORS được chưa được thực hiện đúng trong các trình duyệt mới nhất?

(Ghi chú bên cạnh, cũng chrome không trả về tiêu đề ngay cả khi tôi cho phép chúng trong Expose-Headers, nhưng được biết là lỗi trên danh sách gửi thư chromium, nhưng tôi có thể yêu cầu trước tiên để tìm kích thước tệp)

+1

Bạn đã cố đặt tiêu đề từ máy chủ để trả về miền thực đã đưa ra yêu cầu cho 'Access-Control-Allow-Origin' thay vì' * '? –

+0

có, không có gì thay đổi – kodisha

+0

là url tên miền chéo mà bạn đang yêu cầu có sẵn để kiểm tra –

Trả lời

9

Tôi gặp sự cố tương tự khi làm việc trong dự án cuối cùng của mình. Dưới đây là những gì tôi đã làm:

1) về phía máy chủ xử lý OPTIONS yêu cầu những trở header Access-Control như:

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

2) vào phương thức POST máy chủ xử lý và thêm tiêu đề

 
Access-Control-Allow-Origin: * 

3) trong javascript:

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

Hy vọng nó sẽ giúp

Các vấn đề liên quan