没有“访问控制允许来源”-CORS

Posted

技术标签:

【中文标题】没有“访问控制允许来源”-CORS【英文标题】:No 'Access-Control-Allow-Origin' - CORS 【发布时间】:2016-06-27 14:06:27 【问题描述】:

我尝试通过XMLHttpRequest获取内容:

var url = 'http://mapy.geoportal.gov.pl/wss/service/SLN/guest/sln/woj.json'

    if (XMLHttpRequest) 
    var request = new XMLHttpRequest();
    if ('withCredentials' in request) 
        request.open('GET', url, true);
        request.withCredentials = 'true';
        request.withCredentials = 'true';
        request.setRequestHeader('Access-Control-Allow-Origin', '*');
        request.send();
    

我收到下一条消息:

XMLHttpRequest 无法加载 http://mapy.geoportal.gov.pl/wss/service/SLN/guest/sln/woj.json。 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许访问 Origin 'null'。

如何解决这个问题?我将Access-Control-Allow-Origin 标头设置为*

继续我的 url 问题:jsonp continue

【问题讨论】:

请参考这个SO问题***.com/questions/10636611/…。它将帮助您理解和解决上述问题。 【参考方案1】:

您在前端附加Access-Control-Allow-Origin,但在处理服务器端的请求时应添加该标头。服务器应将Access-Control-Allow-OriginAccess-Control-Request-Method 标头附加到允许执行前端请求的响应。

我的猜测是你不能修改服务器处理请求的方式并且服务器不支持JSON Padding (JSONP),所以你必须使用JSON Proxy来获取那个json数据......

请参阅 How to add CORS support to server 文章和 How does Access-Control-Allow-Origin header work? SO 问题以获取有关 CORS 的更多信息。

【讨论】:

url mapy.geoportal.gov.pl/wss/service/SLN/guest/sln/woj.json' 不是我的服务... @user7172 JSON 代理是一个可以帮助您的工具,请参阅更新的答案【参考方案2】:

CORS 是浏览器唯一的东西。

当您尝试从当前域(当前域)访问某个资源到另一个域时,浏览器会阻止此请求。

现在,服务器或您要获取资源的任何东西都希望将您的域列入白名单,它可以通过添加一些标头来做到这一点。

【讨论】:

以上是关于没有“访问控制允许来源”-CORS的主要内容,如果未能解决你的问题,请参考以下文章

Axios - 没有“访问控制允许来源” - CORS

Laravel 生产,CORS 没有“访问控制允许来源”标题

已被 CORS 策略阻止:没有“访问控制允许来源”

React Cors 政策问题没有“访问控制允许来源”

如何修复“评估已被 CORS 政策阻止:反应中没有“访问控制允许来源”

Amazon S3 CORS 仍然无法正常工作:没有“访问控制允许来源”