javascript - CORS-Header fehlt „Access-Control-Allow-Origin', wie kann das gelöst werden?
黄舟
黄舟 2017-05-16 13:16:09
0
6
2237
<html>
    <head>
        <meta http-equiv="access-control-allow-origin" content="https://openapi.lechange.cn">
        <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
        <script>
            $.post('https://openapi.lechange.cn/openapi/accessToken',{"system":{"ver":"1.0","sign":"5326bdd79317a8cd215b649e75e042b6","appid":"lace1fdddaa5de4393","time":"1491895621","nonce":"49735441495760803893403522385895","appSecret":"6d5c2c727dbb4ba78fac5a0e9ece82"},"params":{"phone":"17691260000"},"id":"80"},function(data){console.log(data);},'json');
        </script>
    </head>
    <body>
        <a></a>
    </body>
</html>

Bei der Ausführung unter Firefox erscheint die folgende Fehlermeldung. Cross-Origin-Anfrage blockiert: Die Same-Origin-Richtlinie verbietet das Lesen der Remote-Ressource unter https://openapi.lechange.cn/o... (Ursache: CORS-Header „Access-Control-Allow-Origin“ fehlt).
Die Lösung bei der Online-Suche besteht darin, der angeforderten Seite einen Header hinzuzufügen. Dies kann nicht behoben werden, und auch andere Methoden können es nicht lösen. Wie man es löst?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(6)
Peter_Zhu

CORS一般不需要在浏览器配置,浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段,Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。
服务器根据这个值,决定是否同意这次请求,也就是说服务器会存在一份白名单,说明哪一些源是可以被允许的,而Access-Control-Allow-Origin就是包含在回应头里的白名单。
浏览器发现,这个回应的头信息没有包含Access-Control-Allow-Origin字段,就知道出错了,从而抛出一个错误,也就是你遇到的提示,是返回结果被浏览器拦截了,而不是请求发不出。

所以你需要的是在服务器上配置这个白名单,而不是更改页面。

关于CORS的原理可以看参考这篇
关于tomcat如何配置可以看这个文档

仅有的幸福

跨域可以使用jsonp嘛

$.ajax({
    url: 'https://openapi.lechange.cn/openapi/accessToken',
    type: 'post',
    dataType:'jsonp',
    data: '{"system":{"ver":"1.0","sign":"5326bdd79317a8cd215b649e75e042b6","appid":"lace1fdddaa5de4393","time":"1491895621","nonce":"49735441495760803893403522385895","appSecret":"6d5c2c727dbb4ba78fac5a0e9ece82"},"params":{"phone":"17691260000"},"id":"80"}',
    success:function(data){
       console.log(data);
     },
})
小葫芦

cors不需要前端配置,让你们后台工程师在服务器上配置

小葫芦

Nginx add header support

左手右手慢动作

用node或者python写个爬虫中转 要么就加代理

淡淡烟草味

在服务器端入口文件最上面贴上如下代码

上线后最好把 Access-Control-Allow-Origin: * 的 * 改为允许访问的特定域名

header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:HEAD,GET,POST,OPTIONS,PATCH,PUT,DELETE');
header('Access-Control-Allow-Headers:Origin,X-Requested-With,Authorization,Content-Type,Accept,Z-Key');
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage