【发布时间】:2017-05-06 00:37:03
【问题描述】:
我有两个 Ajax 调用,一个使用 XMLHttpRequest,一个使用 jQuery。第一个成功完成。第二个似乎成功完成(调用了成功函数),但以抛出 403 错误结束。
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 错误。
谁能看出问题?
【问题讨论】:
-
仅供参考
Access-Control-Allow-*标头由服务器而不是客户端设置,因此在您的 ajax 请求中设置这些标头不会有任何效果 -
很高兴知道。谢谢!
标签: javascript jquery ajax