使用jQuery在AJAX请求中添加标题
我想将自定义标题添加到来自jQuery的AJAX POST请求中。
我试过这个:
$.ajax({
type: 'POST',
url: url,
headers: {
"My-First-Header":"first value",
"My-Second-Header":"second value"
}
//OR
//beforeSend: function(xhr) {
// xhr.setRequestHeader("My-First-Header", "first value");
// xhr.setRequestHeader("My-Second-Header", "second value");
//}
}).done(function(data) {
alert(data);
});
当我发送这个请求时,我看着FireBug,我看到这个标题:
选项xxxx / yyyy HTTP / 1.1
主持人:127.0.0.1:6666
用户代理:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:11.0)Gecko / 20100101 Firefox / 11.0
接受:text / html,application / xhtml + xml,application / xml; q = 0.9,/; q = 0.8
接受语言:fr,fr-fr; q = 0.8,en-us; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
连接:保持活跃
起源:null
访问控制请求方法:POST
Access-Control-Request-Headers:my-first-header,my-second-header
Pragma:无缓存
缓存控制:无缓存
为什么我的自定义标题转到Access-Control-Request-Headers
:
Access-Control-Request-Headers:my-first-header,my-second-header
我期待着这样一个标题值:
我的第一个标题:第一个价值
我的第二个标题:第二个值
可能吗?
您在Firefox中看到的不是实际的请求; 请注意,HTTP方法是OPTIONS,而不是POST。 这实际上是浏览器确定是否允许跨域AJAX请求所做的“预发布”请求:
http://www.w3.org/TR/cors/
飞行前请求中的Access-Control-Request-Headers标题包含实际请求中的标题列表。 然后希望服务器在浏览器提交实际请求之前报告在这种情况下是否支持这些头文件。
以下是如何在JQuery Ajax调用中设置请求标头的示例:
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("Authority", authorizationToken);
},
url: "entities",
data: "json=" + escape(JSON.stringify(createRequestObject)),
processData: false,
success: function(msg) {
$("#results").append("The result =" + StringifyPretty(msg));
}
});
下面的代码适用于我。 我总是只使用单个括号,并且它工作正常。 我建议你应该只使用单个括号或只使用双括号,但不要混淆在一起。
$.ajax({
url: 'YourRestEndPoint',
headers: {
'Authorization':'Basic xxxxxxxxxxxxx',
'X_CSRF_TOKEN':'xxxxxxxxxxxxxxxxxxxx',
'Content-Type':'application/json'
},
method: 'POST',
dataType: 'json',
data: YourData,
success: function(data){
console.log('succes: '+data);
}
});
希望这回答你的问题...
链接地址: http://www.djcxy.com/p/8053.html上一篇: Add Header in AJAX Request with jQuery
下一篇: Run javascript function when user finishes typing instead of on key up?