jquery中ajax请求如何设置http请求头,jQuery Ajax可以通过headers或beforeSend修改request的HTTP headers也可以获取HTTP headers,在ajax里面还有许多功能可以设置,大家可以多看看jquery的api慢慢摸索。
jQuery Ajax可以通过headers或beforeSend修改request的HTTP headers,例如:$.ajaxSetup({
//发送请求前触发
beforeSend: function (xhr) {
var date = new Date();
var time = date.getTime();
var random = getRandomString(20);
var token = 'API';
var confusion_str = '453#$@%!*121212';
var signature = $.sha1($.md5(time + random + token + confusion_str));
xhr.setRequestHeader('source', 1);
xhr.setRequestHeader('time', time);
xhr.setRequestHeader('random', random);
xhr.setRequestHeader('signature', signature);
}
});
注意:W3规定XMLHttpRequest并不能修改全部的HTTP Headers,而仅是一小部分。
jquery获取HTTP headers:$.ajax({
url: "./test.php",
type: "POST",
data: {"user" : "min", "pass" : "he"},
error: function(jqXHR, textStatus, errorThrown) {
if (textStatus == "error") {
alert(textStatus + " : " +errorThrown);
} else {
alert(textStatus);
}
},
success: function(data, textStatus, jqXHR) {
alert(jqXHR.getResponseHeader("Server"));
alert(jqXHR.getResponseHeader("Content-Type"));
alert(jqXHR.getResponseHeader("X-Powered-By"));
alert(jqXHR.getResponseHeader("Content-Encoding"));
alert(jqXHR.getAllResponseHeaders());
alert(jqXHR.getResponseHeader("Set-Cookie"));
//返回null,不能获取Set-Cookie的值
alert(data + textStatus);
}
});
jQuery通过XMLHttpRequest的getResponseHeader或getAllResponseHeaders()可以获取指定的HTTP header field的值,但规定不能获取Set-Cookie和Set-Cookie2的值。
但是需要注意的是当ajax的dateType是jsonp的时候,只少是我测试的时候在服务端我获取不到头信息,如果哪位大神能拿到,敬请指教。