没有“访问控制允许来源”-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-Origin
、Access-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的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 生产,CORS 没有“访问控制允许来源”标题