Reputation: 25261
I'm building a debug tool for AJAX requests, and I'd like to show the request/response headers (much like Firebug does). I can get the response headers using jqXHR.getAllResponseHeaders, but is there an equivalent for the request headers?
If not, I know I can somewhat reconstruct it myself:
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: ???
I care mostly about Accept
. It seems the browser or something is changing this, since I am setting $.ajax({dataType:'json'})
and in firebug I see Accept application/json, text/javascript, */*; q=0.01
. I'd like to be able to capture the actual header being sent.
For Referer
, is it safe to just use window.url, or could it be something else?
I have no idea how to get the Accept-*
or Connection
values.
Upvotes: 16
Views: 15294
Reputation: 151936
Short answer - surprisingly, no.
The XMLHttpRequest API doesn't have a method to retrieve the headers of the request about to be sent. See also this question.
The new jqHXR object, a superset of the browser's native XMLHttpRequest, unfortunately doesn't implement one either.
The .ajaxComplete()
callback does get a settings
parameter which will contain the headers
key if you've set it the normal way, but not if you've used .beforeSend()
to call setRequestHeader()
.
Upvotes: 10
Reputation: 282
You can use "this" as a reference for the current ajax request then get the property "accepts" like so :
$.ajax({
type: 'POST',
dataType: 'JSON',
url:'ajax.php',
data:my_data_array,
success: function(data) {
console.log(this.accepts);
}
});
Upvotes: 5
Reputation: 1513
You can use the jqXHR object in the success function to access the headers.
$.ajax({
...
success: function(data, textStatus, jqXHR ){
console.log(jqXHR);
...
}
})
from http://api.jquery.com/jQuery.ajax/
Upvotes: -6