2つのAjax呼び出しがあります.1つはXMLHttpRequestを使用し、もう1つはjQueryを使用しています。最初のものは正常に完了します。 2番目は正常に完了したように見えますが(成功関数が呼び出されます)、403エラーがスローされて終了します。jQuery Ajaxから403エラー(XMLHttpRequestからではありません)
のXMLHttpRequest(作品)のコードは次のとおりです。
function myfunction() {
var apikey = document.getElementById("apikey").value;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
xmlHttpReq = new XMLHttpRequest();
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 4) {
if (xmlHttpReq.status == 200) {
document.getElementById("results").textContent = xmlHttpReq.responseText;
alert(xmlHttpReq.responseText);
}
else {
alert(xmlHttpReq.statusText);
}
}
}
xmlHttpReq.open("POST" , url , true);
xmlHttpReq.setRequestHeader("Content-Type", "application/json");
xmlHttpReq.setRequestHeader("Access-Control-Allow-Origin","*");
xmlHttpReq.setRequestHeader("x-api-key" , apikey);
xmlHttpReq.setRequestHeader("Access-Control-Allow-Methods", "POST,OPTIONS");
xmlHttpReq.setRequestHeader("Access-Control-Allow-Headers", "Origin,Accept,X-Requested-With,Content-Type,X-Amz-Date,Authorization,x-api-key,X-Amz-Security-Token");
xmlHttpReq.send('{ "username" : "' + username + '" , "password" : "' + password + '" }');
}
403エラーを返すjQueryのためのコードは次のとおりです。
$("#jquerySubmit").click(function() {
var apikey = $("#apikey").val();
var username = $("#username").val();
var password = $("#password").val();
var dataObject = '{ "username" : "' + username + '" , "password" : "' + password + '"}';
$.ajax({ url : url ,
type : 'POST' ,
dataType: 'json' ,
headers : {
'Access-Control-Allow-Origin' : "*" ,
'x-api-key' : apikey ,
'Access-Control-Allow-Methods' : 'POST,OPTIONS',
'Access-Control-Allow-Headers' : 'Origin,Accept,X-Requested-With,Content-Type,X-Amz-Date,Authorization,x-api-key,X-Amz-Security-Token'
},
success: function (result) {
alert(result.body);
},
error: function (error) {
alert(error.responseText);
},
data : dataObject
});
});
成功警告文のが正常を発射し、 は、期待される結果をと表示しますが、403エラーをスローします。
誰に問題が見られますか?
FYI 'Access-Control-Allow- *'ヘッダーはクライアントではなくサーバーによって設定されるため、あなたのAjaxリクエストにそれらの設定を行っても効果はありません –
お役立ち情報ありがとう! – Todd