suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - CORS-Header fehlt „Access-Control-Allow-Origin“, wie kann das gelöst werden?

<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?

黄舟黄舟2739 Tage vor2190

Antworte allen(6)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-05-16 13:18:09

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

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

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:18:09

    跨域可以使用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);
         },
    })

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-16 13:18:09

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

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-16 13:18:09

    Nginx add header support

    Antwort
    0
  • ringa_lee

    ringa_lee2017-05-16 13:18:09

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

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:18:09

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

    上线后最好把 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');

    Antwort
    0
  • StornierenAntwort