gre*_*mac 16 jquery http-headers
我正在为AJAX请求构建一个调试工具,我想显示请求/响应头(就像Firebug一样).我可以使用jqXHR.getAllResponseHeaders获取响应头,但请求头是否等效?
如果没有,我知道我可以自己重建一下:
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: ???
Run Code Online (Sandbox Code Playgroud)
我最关心的是Accept.似乎浏览器或其他东西正在改变这一点,因为我正在设置 $.ajax({dataType:'json'})并且在我看到的萤火虫中Accept application/json, text/javascript, */*; q=0.01.我希望能够捕获正在发送的实际标头.
因为Referer,使用window.url是安全的,还是可能是其他东西?
我不知道如何得到Accept-*或Connection值.
简短的回答 - 令人惊讶的是,没有.
在XMLHttpRequest的API不必检索有关发送请求的报头的方法.另见这个问题.
遗憾的是,新的jqHXR对象是浏览器的原生XMLHttpRequest的超集,但也没有实现.
该.ajaxComplete()回调确实得到了settings其中将包含参数headers键,如果你已经设定,以正常的方式,但如果你已经使用.beforeSend()调用setRequestHeader().
小智 5
您可以使用“this”作为当前ajax请求的参考,然后像这样获取属性“accepts”:
$.ajax({
type: 'POST',
dataType: 'JSON',
url:'ajax.php',
data:my_data_array,
success: function(data) {
console.log(this.accepts);
}
});
Run Code Online (Sandbox Code Playgroud)