跨域请求被阻止:同源策略不允许读取某个 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 处的远程资源的主要内容,如果未能解决你的问题,请参考以下文章
跨域请求被阻止:同源策略不允许在 http://........ 读取远程资源
跨域请求被阻止:同源策略不允许在 http://localhost3000 读取远程资源