Demande de données de différents domaines à l'aide d'AJAX
Malgré les problèmes de sécurité associés aux appels Ajax inter-domaines, il existe des situations lors de la récupération de données depuis des sites Web externes sont nécessaires. Cette question étudie les possibilités de réaliser un tel échange de données, compte tenu des restrictions inhérentes.
Le principal obstacle aux appels Ajax inter-domaines est la politique de même origine (SOP) du navigateur. Cette politique interdit les requêtes Ajax directes vers des URL sur différents domaines. Comme le suggère la question, les tentatives d'appel Ajax vers "http://www.google.com" seront bloquées par le navigateur.
Bien que la définition du dataType sur "jsonp" autorise les appels inter-domaines , cela introduit un nouveau défi. La réponse du site Web externe ne sera pas au format JSON, ce qui entraînera des erreurs de syntaxe lors de la tentative d'analyse.
Solution : Utiliser un langage côté serveur comme proxy
Depuis Les appels Ajax directs ne sont pas autorisés en raison de SOP, la solution réside dans l'utilisation d'un langage côté serveur pour agir en tant que proxy. Ce langage peut récupérer les données du site Web externe souhaité, puis les renvoyer au navigateur du client.
Une approche pour mettre en œuvre cela est illustrée dans les extraits de code fournis. La partie jQuery du code envoie une requête Ajax à un script PHP nommé "proxy.php", en passant l'adresse du site Web externe en paramètre. Dès réception de la réponse du site Web externe, le script PHP (proxy.php) fait simplement écho à son contenu. De cette manière, le navigateur reçoit les données du site Web externe sans enfreindre le SOP.
Il est important de noter que cette méthode implique l'envoi de données (dans ce cas, l'adresse du site Web externe) à un serveur. script latéral, ce qui rend crucial la prise en compte des implications en termes de sécurité et de confidentialité des données.
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!