当我在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')
但每次添加标题时都会出错。并在删除正常工作后。请帮忙。
答案 0 :(得分:0)
你可以在这里找到答案:
Cross-Domain AJAX doesn't send X-Requested-With header
您必须在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,