Maison >interface Web >js tutoriel >Partager des solutions aux problèmes inter-domaines en JavaScript
Cet article présente principalement des informations pertinentes sur les problèmes et solutions inter-domaines Javascript. Les amis dans le besoin peuvent se référer à
Problèmes et solutions inter-domaines Javascript
<.>Qu'est-ce qu'un problème inter-domaines ?
Ce problème inter-domaines est causé par la politique de même origine du navigateur. L'adresse URL demandée doit être le même protocole, le même nom de domaine et le même port que l'URL du navigateur, sinon, il n'est pas autorisé.浏览器URL | 要访问的URL | 结果 |
---|---|---|
http://www.123.com/index | http://www.123.com/server | 成功 |
http://www.123.com/index | http://www.456.com/server | 域名不相同,跨域 |
http://www.123.com:8080/index | http://www.123.com:8888/index.htm | 端口不同,跨域 |
http://www.123.com/index | https://www.123.com/index | 协议不同,跨域 |
Solution
Toute balise avec l'attribut src peut traverser des domaines, tels que les balises script, img, iframe.JSONP
JSONP est l'application de balises de script. Le nom complet de JSONP est JSON With Padding. Il se compose de deux parties, la fonction de rappel et les données. La fonction de rappel correspond au moment où la réponse arrive. La fonction qui doit être appelée dans la page, le nom de la fonction de rappel est spécifié dans la requête et les données sont les données JSON transmises à la fonction de rappel Exemple. :<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> function jsonCallback(data){ alert(data); }; var url = "http://localhost:8888/test?callback=jsonCallback"; var script = document.createElement('script'); script.type = "text/javascript"; script.setAttribute('src', url); document.getElementsByTagName('head')[0].appendChild(script); </script> </head> <body> </body> </html>Inconvénients : Il n'est pas facile de confirmer si la requête JSONP a échouéProblèmes de sécurité, JSONP est exécuté en chargeant du code depuis d'autres domaines , sa fiabilité doit donc être déterminéeLa cause du problème inter-domainesLe problème inter-domaines est dû à la restriction de la politique de même origine du navigateur Le js du courant. Le nom de domaine ne peut lire que les attributs de fenêtre du même domaine. Scénarios dans lesquels des problèmes inter-domaines surviennentLorsque js est utilisé dans la page pour obtenir des données d'autres sites Web, des problèmes inter-domaines se produiront, comme l'utilisation d'ajax dans le site Web pour demander des données à partir d'autres sites Web Lorsque vous demandez des données à partir d'interfaces de données météorologiques, express ou autres et d'applications hybrides, le navigateur affichera l'erreur suivante. Dans ce scénario, nous devons résoudre le problème inter-domaines de js.
XMLHttpRequest cannot load http://你请求的域名. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://当前页的域名' is therefore not allowed access.Quelles situations entraîneront des problèmes entre domaines ?
Même si la demande de page http://127.0.0.1:80/ est sur http://localhost:80/, il y aura des problèmes inter-domaines
Résoudre les problèmes inter-domaines Les problèmes de domaine peuvent être résolus des manières suivantes Utiliser jsonp
Proxy du serveur
Le serveur définit Access-Control-Allow-Origin dans l'en-tête de la demande pour spécifier le nom de domaine à partir duquel les données peuvent être obtenues
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!