2010-08-21 2 views
22

Je sais que si sur ma propre page Web, si mon utilisateur est sur: http://www.example.com/form.php
même politique Origine - AJAX et en utilisant les API publiques

et je fais une demande ajax à partir de cette page: http://example.com/responder.php

Il échouera en raison de la même politique d'origine (sous-domaine est différent). Ce que j'essaie de comprendre, c'est comment les requêtes AJAX peuvent-elles extraire des données d'API comme Flickr quand la requête et le serveur sont évidemment différents.


Edit:

par exemple: Pourquoi ce code fonctionne?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...' 

(Referred this Community Wiki) Est-il à l'aide Cross Origin Resource Sharing?

Merci!

Répondre

17

Il existe peu de méthodes connues pour contourner la politique de même origine. Une technique populaire consiste à utiliser "Script Tag Injection" comme dans JSONP. Étant donné que la balise <script> n'est pas contrainte par la stratégie de même origine, un script sur un domaine tiers peut fournir un code exécutable qui interagit avec une fonction de rappel fournie. Vous pouvez consulter la section dans l'article suivant Lectures suggérées « Trucs et astuces » sur le sujet:

Vous pouvez également être intéressé à vérifier le poste débordement de pile suivant pour aller plus loin sur d'autres techniques de travail autour de la même politique origine:


MISE À JOUR: plus la question mise à jour:

Je cite la documentation jQuery sur $.getJSON(): "rappel ="

Si l'URL comprend la chaîne dans l'URL, la requête est traitée comme JSONP à la place.

+0

Ce n'est pas tellement que l'élément est exempté de la politique de même origine que JavaScript n'a pas accès aux données brutes retournées. Cela dépend de la tierce partie fournissant le code exécutable qui interagit avec une fonction que vous fournissez. – Quentin

+1

@David: Merci. Mise à jour ma réponse pour être plus précis :) –

+1

aha! putain, jQuery faire toutes ces astuces gère en arrière-plan! :) SOIGNÉ! Love jQuery --- Ref: http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin

Questions connexes