我必须使用 Authorization header 将 XML 发送到服务器,并且它必须是POST。
现在我有两个选择。
当我使用 dataType = 'jsonp' 时,它总是变成 GET 而不是 POST。我的数据也必须是 XML。
var request = {}; request.type = 'POST'; request.contentType = 'application/jsonp; charset=utf-8'; request.dataType = 'jsonp'; request.data = JSON.stringify(this.data); request.url = this.url; request.beforeSend = function (xhr) { xhr.setRequestHeader("Authorization", "Basic "); }; request.processData = false; $.ajax(request);
但是如果没有 dataType = 'jsonp' 我根本就没有身份验证 header 。以下代码仅适用于 Chrome。
var request = {}; request.type = 'POST'; request.contentType = 'text/xml'; request.dataType = 'xml'; request.data = this.data; request.url = this.url; request.beforeSend = function (xhr) { xhr.setRequestHeader("Authorization", "Basic "); }; request.processData = false; $.ajax(request);
是的,我知道 StackOverflow 上有很多类似的问题,我已经阅读了几十个,但仍然没有找到正确的答案。
最佳答案
在beforeSend
方法中修改headers,例如:
$.ajax({
url: url,
method: "POST",
dataType: "json",
crossDomain: true,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
cache: false,
beforeSend: function (xhr) {
/* Authorization header */
xhr.setRequestHeader("Authorization", "Basic " + Utils.getUsernamePassword());
xhr.setRequestHeader("X-Mobile", "false");
},
success: function (data) {
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
关于javascript - JQuery AJAX header 授权 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557518/