【问题标题】:No 'Access-Control-Allow-Origin' - CORS没有“访问控制允许来源”-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

【问题讨论】:

标签: javascript json cors


【解决方案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 的更多信息。

【讨论】:

【解决方案2】:

CORS 是浏览器唯一的东西。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 2018-08-10
    • 2018-03-19
    • 2019-02-09
    • 2016-06-02
    • 2020-10-25
    • 2019-09-16
    • 2020-11-02
    相关资源
    最近更新 更多