Maison > interface Web > js tutoriel > Comment résoudre le problème inter-domaines Ajax

Comment résoudre le problème inter-domaines Ajax

coldplay.xixi
Libérer: 2020-10-29 09:25:27
original
2299 Les gens l'ont consulté

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.

Comment résoudre le problème inter-domaines Ajax

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’);//允许访问的方式
Copier après la connexion

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()+")");
Copier après la connexion

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

Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal