跨域请求被阻止:同源策略不允许读取某个 URI 处的远程资源

Posted

技术标签:

【中文标题】跨域请求被阻止:同源策略不允许读取某个 URI 处的远程资源【英文标题】:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some URI 【发布时间】:2017-04-15 03:41:49 【问题描述】:

我写了以下 ajax 请求:

$.ajax(    
    type : "POST",
    processData:false,        
    crossDomain:true,
    crossOrigin:true,
    contentType:false,          
    headers:  
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "POST",
        "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept",   
    ,
    url : 'my URI',
    data: formData,
    success : function(receivedData) 
        console.log("SUCCESS: ");
        alert(receivedData);
    
);

但在回复中,我通过浏览器收到以下消息: 跨域请求被阻止:同源策略不允许在我的 URI 上读取远程资源。 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。

【问题讨论】:

第一步应该始终是谷歌搜索错误消息。这是一个非常常见的问题,互联网上有数千种解决方案 【参考方案1】:

尝试下面的代码,如果它不起作用,那么你需要实现服务器端 cors 启用

$.ajax(    
        type : "POST",
        processData:false,

        crossDomain:true,
        crossOrigin:true,
        contentType:false,
        'Access-Control-Allow-Methods': 'POST',
        'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',   
        ,
        header:'Access-Control-Allow-Origin': '*',
        url : 'my URI',
        data: formData,
        success : function(receivedData) 
            console.log("SUCCESS: ");
            alert(receivedData);

            

);

那么你可以像这样使用ajax调用

$.ajax(
        url: 'http:ww.abc.com?callback=?',
        dataType: 'JSONP',
        jsonpCallback: 'callbackFnc',
        type: 'GET',
        async: false,
        crossDomain: true,
        success: function ()  ,
        failure: function ()  ,
        complete: function (data) 
            if (data.readyState == '4' && data.status == '200') 
                errorLog.push( IP: Host, Status: 'SUCCESS' )
            
            else 
                errorLog.push( IP: Host, Status: 'FAIL' )
            
        
);

【讨论】:

uhm...您在此处使用的 9 个 ajax 选项中,只有 5 个实际上对 jsonp 请求执行任何操作。对于 CORS 选项,crossDomain、headers 和 crossOrigin 都无关紧要。

以上是关于跨域请求被阻止:同源策略不允许读取某个 URI 处的远程资源的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 跨域请求被阻止:同源策略不允许读取远程资源

跨域请求被阻止:同源策略不允许在 http://........ 读取远程资源

Ajax:跨域请求被阻止:同源策略不允许读取远程资源

跨域请求被阻止:同源策略不允许在 http://localhost3000 读取远程资源

跨域请求被阻止:同源策略不允许在 https://localhost:3000/ 读取远程资源 [重复]

Angular + Nodejs Express:错误跨域请求被阻止:同源策略不允许读取远程资源