11
votes

jquery.ajax échoue lorsque l'URL provient de différents serveurs

Pourquoi jquery.ajax () jette une erreur sans message d'erreur si vous utilisez une URL avec un serveur DFRERENT?


0 commentaires

4 Réponses :


11
votes

C'est en raison de la restriction des demandes de domaine croisées implémentées dans le navigateur pour XMLHTTPQUESTS. Vous pouvez contourner cela en utilisant JSONP comme format, sinon vous aurez besoin d'un proxy côté serveur pour la demande.

citant depuis le Documentation Ajax sur http://jquery.com

Remarque: toute la télécommande (pas sur le même Domaine) Les demandes doivent être spécifiées comme obtenir quand "script" ou "JSONP" est le DataType (parce qu'il charge le script en utilisant une étiquette de script DOM). Options Ajax qui nécessite un objet XMLHTTTPRequest ne sont pas disponibles pour ces demandes. Les fonctions complètes et de réussite sont appelé à la fin, mais ne pas recevoir un objet XHR; les avant-coureurs et les fonctions DataFilter ne sont pas appelé.


0 commentaires

2
votes

La méthode AJAX () utilise en interne XMLHTTPQUEST qui obéit la même stratégie de domaine http: //fr.wikipedia .org / wiki / même_origin_policy . getjson () La méthode peut être utilisée à la place pour faire des appels croisés.

J'espère que cela vous aidera, Bogdan


0 commentaires

0
votes

Parce que si la même politique d'origine JQuery ne le permettra pas. La meilleure option utilisera une page de serveur proxy pour obtenir les pages requises.


0 commentaires

6
votes

comme http://fr.wikipedia.org/wiki/cross-origin_resource_shaingleighing dit:

Partage des ressources à origine croisée (CORS) est un mécanisme qui permet à une page Web de faire de XMLHTTPQUESTS sur un autre domaine. 1 Ces demandes" cross-domaines "ne seraient autrement interdites par les navigateurs Web, conformément à la même politique de sécurité d'origine. Cors définit une solution dans laquelle le navigateur et le serveur peuvent interagir pour déterminer si la demande d'origine croisée ou non. 2 Il est plus puissant que ne permettant que les demandes d'origine identique, mais elle est plus sécurisée que simplement permettre à toutes ces demandes d'origine croisée.

pour php Il est fait en utilisant Header () < / a> fonction: xxx

Cors peut être utilisé comme alternative moderne au motif JSONP. Tandis que JSON ne prend en charge que la méthode Get Demander, Cors prend également en charge les autres types de demandes HTTP. Utiliser Cors permet à un programmateur Web d'utiliser XMLHTTPQuRequest régulier, qui prend en charge une meilleure manipulation des erreurs que JSONP. D'autre part, JSONP travaille sur les navigateurs hérités qui excluez le support de Cors. Cors est soutenu par la plupart des navigateurs Web modernes. En outre, tandis que JSONP peut causer des problèmes XSS où le site externe est compromis, Cors permet aux sites Web d'analyser manuellement les réponses à assurer la sécurité.

JSONP ou "JSON avec rembourrage" est une technique de communication utilisée dans Javascript. Il fournit une méthode pour demander des données d'un serveur dans un Différent domaine, quelque chose interdit par des navigateurs Web typiques car de la même politique d'origine.


0 commentaires