[〜#〜] xml [〜#〜]をAuthorization headerとともにサーバーに送信する必要があります[〜#〜] must [〜# 〜] be [〜#〜] post [〜#〜]になります。
今、私には2つの選択肢があります。
DataType = 'jsonp'を使用すると、POSTではなく常にGETになります。また、私のデータは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'がないと、Authenticationヘッダーがまったくありません。次のコードは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
メソッドのヘッダーを変更します。次に例を示します。
$.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) {
}
});