我必须使用授权标题将 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'我根本没有身份验证标头。以下代码仅适用于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上有很多类似的问题,我已经阅读过几十个问题,但仍然找不到合适的答案。
答案 0 :(得分:13)
修改beforeSend
方法中的标题,例如:
$.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) {
}
});