Maison > Questions et réponses > le corps du texte
<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?
天蓬老师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
仅有的幸福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);
},
})
高洛峰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
ringa_lee2017-05-16 13:18:09
Utilisez node ou python pour écrire un relais de robot ou ajouter un proxy
淡淡烟草味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');