recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - En-tête CORS manquant 'Access-Control-Allow-Origin', comment résoudre le problème?

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

Lors de l'exécution sur Firefox, le message d'erreur suivant apparaît. Requête d'origine croisée bloquée : La politique de même origine interdit la lecture de la ressource distante située à l'adresse https://openapi.lechange.cn/o... (Cause : l'en-tête CORS 'Access-Control-Allow-Origin' est manquant).
La solution trouvée dans les recherches en ligne consiste à ajouter un en-tête à la page demandée. Cela ne peut pas être géré, et d'autres méthodes ne peuvent pas non plus le résoudre. Comment le résoudre?

黄舟黄舟2752 Il y a quelques jours2221

répondre à tous(6)je répondrai

  • 天蓬老师

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

    CORS n'a généralement pas besoin d'être configuré dans le navigateur. Le navigateur détecte que cette requête AJAX d'origine croisée est une requête simple et ajoute automatiquement un champ Origine aux informations d'en-tête. Le champ Origine est utilisé pour indiquer quelle source (protocole). ) provient de cette requête. + nom de domaine + port).
    Le serveur décide d'accepter ou non la demande en fonction de cette valeur, ce qui signifie que le serveur aura une liste blanche indiquant quelles sources sont autorisées, et Access-Control-Allow-Origin est inclus dans la liste blanche en-tête de réponse.
    Le navigateur constate que les informations d'en-tête de cette réponse ne contiennent pas le champ Access-Control-Allow-Origin. Il sait donc que quelque chose s'est mal passé et renvoie une erreur. Autrement dit, l'invite que vous avez rencontrée indique que le résultat renvoyé était. intercepté par le navigateur, et ce n’est pas que la demande ne puisse pas être envoyée.

    Il vous faut donc configurer cette liste blanche sur le serveur, pas changer la page.

    Pour le principe de CORS, vous pouvez vous référer à cet article
    Pour comment configurer Tomcat, vous pouvez lire ce document

    répondre
    0
  • 仅有的幸福

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

    Pouvez-vous utiliser jsonp sur plusieurs domaines ?

    $.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);
         },
    })

    répondre
    0
  • 高洛峰

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

    cors ne nécessite pas de configuration front-end, laissez vos ingénieurs back-end le configurer sur le serveur

    répondre
    0
  • 高洛峰

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

    Nginx ajoute la prise en charge des en-têtes

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-16 13:18:09

    Utilisez node ou python pour écrire un relais de robot ou ajouter un proxy

    répondre
    0
  • 淡淡烟草味

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

    Collez le code suivant en haut du fichier d'entrée côté serveur

    Après être en ligne, il est préférable de remplacer le * dans Access-Control-Allow-Origin: * par un nom de domaine spécifique qui permet l'accès

    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');

    répondre
    0
  • Annulerrépondre