Solution au problème inter-domaines ajax : 1. Ajoutez un en-tête à l'en-tête de réponse pour autoriser l'accès ; 2. jsonp ne prend en charge que les requêtes d'obtention mais pas les requêtes de publication ; 3. Transfert interne de httpClient 4. Utilisez nginx pour construire ; une passerelle d'interface au niveau de l'entreprise.
Recommandations d'apprentissage gratuites associées : ajax (Vidéo )
Solution au problème inter-domaines ajax :
Solution 1 : Ajouter un en-tête à l'en-tête de réponse pour autoriser l'accès
Partage de ressources entre origines croisées (CORS) Partage de ressources entre origines croisées
Le fondement de sécurité de cette solution d'accès entre domaines est basé sur "JavaScript ne peut pas contrôler cet en-tête HTTP"
Il est nécessaire d'autoriser ou non l'accès entre domaines via l'en-tête HTTP renvoyé par le domaine cible.
response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问 response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式
Solution 2 : jsonp ne prend en charge que les requêtes d'obtention mais pas de publication
Utilisation : ①Changez le type de données en jsonp ②jsonp : "jsonpCallback"— — —La valeur réelle envoyée au backend est http://a.a.com/a/FromServlet?userName=644064&jsonpCallback=jQueryxxx ③Le backend obtient le jsonpCallback dans la requête get ④Construire la structure de rappel
$.ajax({ type : "GET", async : false, url : "http://a.a.com/a/FromServlet?userName=644064", dataType : "jsonp",//数据类型为jsonp jsonp : "jsonpCallback",//服务端用于接收callback调用的function名的参数 success : function(data) { alert(data["userName"]); }, error : function() { alert('fail'); } }); //后端 String jsonpCallback = request.getParameter("jsonpCallback"); //构造回调函数格式jsonpCallback(数据) resp.getWriter().println(jsonpCallback+"("+jsonObject.toJSONString()+")");
Implémentation JSONP Principe
Dans le cadre de la politique de même origine, les pages sous un certain serveur ne peuvent pas obtenir de données en dehors du serveur, c'est-à-dire que l'ajax général ne peut pas faire de requêtes inter-domaines. Cependant, les balises telles que img, iframe et script sont des exceptions. Ces balises peuvent demander des données sur d'autres serveurs via l'attribut src. Grâce à la politique d'ouverture de la balise