Le contenu de cet article est une introduction détaillée (exemple de code) sur le cross-domain AJAX. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Il existe deux solutions couramment utilisées pour les problèmes inter-domaines AJAX. Enregistrez-les brièvement et consultez les documents de référence pour plus de détails. L'exemple suivant crée deux noms de domaine à des fins de test, www.test.com et www.example.com.
Politique de même origine
La politique de même origine restreint la manière dont les documents ou les scripts chargés à partir d'une source interagissent avec les ressources d'une autre source. Il s'agit d'un mécanisme de sécurité essentiel pour isoler les fichiers potentiellement malveillants.Deux pages proviennent de la même source si le nom de domaine, le protocole et le port sont tous identiques, et il n'y a aucun problème d'interaction entre eux. La politique de même origine est un mécanisme de sécurité très important, mais il est parfois nécessaire de percer ce mécanisme, qui nécessite du cross-domain.
JSONP
JSONP est une méthode très courante. Elle est implémentée en utilisant le principe selon lequel la balise n'a pas de cross-domain. restrictions. Ce qui suit est un exemple d'utilisation de JQuery dans www.test.com
$.ajax( { url:'//www.example.com', data:{name:'tom'}, type:'get', dataType:'jsonp', jsonp: "callback", success:function(data) { console.log(data) } })
Ce qui suit est le traitement PHP de www.example.com
<?php $callback = $_GET['callback']; $name = $_GET['name']; // 处理数据 $data = md5($name); echo $callback . '(' . json_encode($data) . ')';
CORS
CORS (Cross-origin Resource Sharing), la norme de partage de ressources entre origines croisées permet aux serveurs d'applications Web d'effectuer un contrôle d'accès entre domaines. Comparé à JSONP qui ne prend en charge que GET, CORS prend en charge davantage de requêtes HTTP et est plus simple et plus sécurisé. Cependant, CORS peut avoir des problèmes de compatibilité.
Ce qui suit est le traitement PHP pour l'envoi d'une requête AJAX
$.ajax( { url:'//www.example.com', data:{name:'tom'}, type:'post', dataType:'json', success:function(data) { console.log(data) } });
www.example.com dans www.test.com
<?php header("Access-Control-Allow-Origin: http://www.test.com"); $name = $_POST['name']; // 处理数据 $data = md5($name); echo json_encode($data);
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!