在 ajax 中添加跨源标头,不起作用

add header in ajax for Cross-Origin, not working

本文关键字:不起作用 ajax 添加      更新时间:2023-09-26

当我在 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,