当我在 ajax 中添加标头HTTP_X_REQUESTED_WITH
以请求另一台服务器时,它会给出 erorr 作为Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.xxxxxxxxxxxx.com/checkurl.php?action=xxxxxxx. This can be fixed by moving the resource to the same domain or enabling CORS.
如果我删除此标头,它可以正常工作。
我有很多 ajax 请求,所以我使用这种格式在所有 ajax 请求中添加标头
$(document).ajaxSend(function (event, jqxhr, settings) {
jqxhr.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest')
});
我的 ajax 是:
$.ajax({
url:sitePath+'Xxxxxxxxx/checkurl.php?action=Pages&page='+actionPage,
type :'POST',
crossDomain:true,
success : function(data){
hideLoadingDiv();
if(data.getElementsByTagName("message")[0].getElementsByTagName("messageType")[0].childNodes[0].nodeValue=="SUCCESS")
{
document.getElementById(divID).innerHTML=data.getElementsByTagName("PageBody")[0].childNodes[0].nodeValue+'<span><a onclick="return checkRegistrationValidation();" href="javascript:void(0);" class="orengeBtn">Back</a></span>';
displayDiv(divID);
}
else if(data.getElementsByTagName("message")[0].getElementsByTagName("messageType")[0].childNodes[0].nodeValue=="ERROR")
{
showErrorMessage(data.getElementsByTagName("message")[0].getElementsByTagName("messageText")[0].childNodes[0].nodeValue);
}
else
{
generalError();
}
},
error:function(xhr,ajaxOptions, thrownError){
hideLoadingDiv();
if(xhr.status==200){
generalError();
}
else{
networkError();
}
if(debugMode==1){
displayAjaxError(xhr,thrownError);
}
}
});
在我的服务器文件中,我使用
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type')
但是每次添加标题时都会出错。并在删除后正常工作。请帮忙。
你可以在这里找到答案:
跨域 AJAX 不发送 X-Request-With 标头
您必须在 ajax 中手动添加标头:
$.ajax({ url:sitePath+'Xxxxxxxxx/checkurl.php?action=Pages&page='+actionPage, type :'POST', crossDomain:true, headers: {'X-Requested-With': 'XMLHttpRequest'}
或者使请求不跨域:
$.ajax({ url:sitePath+'Xxxxxxxxx/checkurl.php?action=Pages&page='+actionPage, type :'POST', crossDomain:false,