2009-09-28 9 views
2

J'essaie d'effectuer une simple tentative jQuery AJAX en utilisant un .get() ou un .post().Comment utiliser jQuery AJAX pour un domaine extérieur?

Si j'ai une copie locale sur mon serveur et faire:

$.get('/hash.php',...,...) 

Je moniteur dans ma console Firebug que le get est fait et je reçois une réponse.

Tout ce que je change est l'URI à un serveur extérieur et rien ne se passe. Ne pas aider si je supprime le 's' ou si j'utilise le poste à la place. Ai-je manqué un paramètre que je devrais utiliser dans jQuery? J'ai oublié de mentionner la raison pour laquelle je suis en train de migrer d'un site PHP4 vers un site PHP5, mais pour l'instant le site PHP4 en direct a besoin d'une fonction qui n'est pas en PHP4. J'appelle donc un serveur PHP5 pour le faire. Je pense que j'ai une bonne solution de contournement. Merci!

Répondre

3

Vous ne pouvez pas envoyer une requête Ajax à un autre domaine que l'autre sur lequel votre application est déployée. C'est à cause du Same Origin Policy mis en œuvre dans les web-browers - une mesure de sécurité.

Il y a deux solutions possibles, bien que:

  • envoyer la demande à votre propre serveur, qui agira comme une procuration à un autre (que ce soit via un script PHP, ou, mieux, en utilisant une partie de son mod_proxy_http Apache module)
  • ou ne pas utiliser "Ajax", mais d'autres techniques, comme la création dynamique <script> tags - qui ne sont pas soumis à la contrainte SOP.
+1

Vous pouvez utiliser 'jsonp', qui est juste une version glorifiée de la solution de tag'

1

Javascript ne peut pas accéder à un serveur en dehors de l'endroit d'origine du fichier javascript.

Ceci est une caractéristique de sécurité.

En fonction de la spécificité du navigateur que vous souhaitez obtenir, vous pouvez contourner ce problème, mais cela devient un peu glissant.

1

Vous ne pouvez pas effectuer de requêtes inter-domaines inter-domaines directement, cela poserait un problème de sécurité.

Vous devrez appeler votre fichier php local depuis jquery et faire en sorte que le fichier php communique avec l'autre domaine.

3

Il est vrai que vous ne pouvez normalement pas faire Ajax en dehors de votre domaine en raison des navigateurs. Cependant, en utilisant JSONP, il est possible de le faire. jQuery a également un paramètre jsonp pour Ajax maintenant. Pour que cela fonctionne, vous devez contrôler la sortie du serveur.

1

Il existe une méthode appelée JSONP qui est utilisée pour contourner cela. Voir la 2ème réponse sur SO #570100