2012-02-01 5 views
15

Tôi đang xây dựng một công cụ gỡ lỗi cho các yêu cầu AJAX và tôi muốn hiển thị tiêu đề yêu cầu/phản hồi (giống như Firebug). Tôi có thể nhận tiêu đề phản hồi bằng cách sử dụng jqXHR.getAllResponseHeaders, nhưng có tương đương với các tiêu đề yêu cầu yêu cầu không?


Nếu không, tôi biết tôi phần nào có thể tái tạo lại nó bản thân mình:

GET /blah // this part is easy 
Host: servername.com // pretty easy 
Accept: ??? 
Referer: ??? // just use current page url? 
User-Agent: // easy from navigator.userAgent 
X-Requested-With: XMLHttpRequest // hardcoded, $.ajax always does this? 
Accept-Charset: ??? 
Accept-Encoding: ??? 
Accept-Language: ??? 
Connection: ??? 

tôi quan tâm chủ yếu về Accept. Dường như trình duyệt hoặc thứ gì đó đang thay đổi điều này, vì tôi đang thiết lập $.ajax({dataType:'json'}) và trong firebug tôi thấy Accept application/json, text/javascript, */*; q=0.01. Tôi muốn có thể nắm bắt được tiêu đề thực tế đang được gửi.

Đối với Referer, có an toàn để chỉ sử dụng window.url hay nó có thể là cái gì khác?

Tôi không biết cách lấy các giá trị Accept-* hoặc Connection.

+0

bản sao có thể có của [nhận tiêu đề SENT trong XMLHttpRequest] (http://stackoverflow.com/questions/7564007/get-sent-headers-in-an-xmlhttprequest) –

Trả lời

-6

Bạn có thể sử dụng đối tượng jqXHR trong chức năng thành công để truy cập các tiêu đề.

$.ajax({ 
... 
success: function(data, textStatus, jqXHR){ 
console.log(jqXHR); 
... 
} 
}) 

từ http://api.jquery.com/jQuery.ajax/

+3

Kể từ giây 2.0.3, bạn có thể nhận được * trả lời * tiêu đề (thông qua 'getAllResponseHeaders()' hoặc 'getResponseHeader()') nhưng không * yêu cầu * tiêu đề như tôi đã yêu cầu. – gregmac

3

Bạn có thể sử dụng "này" như một tài liệu tham khảo cho các yêu cầu ajax hiện sau đó nhận được tài sản "chấp nhận" như vậy:

$.ajax({ 
       type: 'POST', 
       dataType: 'JSON', 
       url:'ajax.php', 
       data:my_data_array, 
       success: function(data) { 
        console.log(this.accepts); 
       } 
      }); 
5

Câu trả lời ngắn - đáng ngạc nhiên, không có .

XMLHttpRequest API không có phương thức truy xuất tiêu đề của yêu cầu sắp gửi. Xem thêm this question.

Mới jqHXR object, a superset of the browser's native XMLHttpRequest, rất tiếc là không thực hiện một trong hai.

Các .ajaxComplete() callback không nhận được một thông số settings mà sẽ chứa chìa khóa headers nếu bạn đã thiết lập nó theo cách thông thường, nhưng không phải nếu bạn đã sử dụng để gọi .beforeSend()setRequestHeader().