2010-08-21 9 views
22

Ich weiß, wenn auf meiner eigenen Webseite, wenn mein Benutzer auf: http://www.example.com/form.php
Same Origin Policy - AJAX & mit öffentlichen APIs

und ich eine Ajax-Anfrage machen von dieser Seite an: http://example.com/responder.php

Es wird wegen der gleichen Ursprungsrichtlinie fehlschlagen (Subdomain ist anders).

Was ich versuche zu verstehen, ist, wie AJAX-Anfragen Daten von APIs wie flickr ziehen können, wenn die Anfrage und der Server offensichtlich anders sind.


Edit:

zB: Warum funktioniert dieser Code?

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

(Referred this Community Wiki) Ist es Cross Origin Resource Sharing mit?

Danke!

Antwort

17

Es gibt wenige bekannte Methoden zum Umgehen der gleichen Ursprungsrichtlinie. Eine beliebte Technik ist die Verwendung von "Script Tag Injection" wie in JSONP. Da das <script>-Tag nicht durch die gleiche Ursprungsrichtlinie eingeschränkt ist, kann ein Skript in einer Drittanbieterdomäne ausführbaren Code bereitstellen, der mit einer bereitgestellten Rückruffunktion interagiert. Sie können auf das Thema zur weiteren Lektüre der „Tipps und Tricks“ in dem folgenden Artikel prüfen wollen:

Sie auch darauf hin, bei der Prüfung interessiert sein der folgende Stack-Überlauf Beitrag zur weiteren Lektüre auf anderen Techniken rund um die Same Origin Policy arbeiten:


UPDATE: Weiterhin ist die aktualisierte Frage:

aus der Dokumentation jQuery auf $.getJSON() Zitiert: "Rückruf ="

Wenn die URL die Zeichenfolge enthält In der URL wird die Anfrage stattdessen als JSONP behandelt.

+0

Es ist nicht so sehr, dass das Element von der gleichen Ursprungsrichtlinie ausgenommen ist, da JavaScript keinen Zugriff auf die zurückgegebenen Rohdaten hat. Es hängt davon ab, dass der Drittanbieter ausführbaren Code bereitstellt, der mit einer von Ihnen bereitgestellten Funktion interagiert. – Quentin

+1

@David: Danke. Aktualisierte meine Antwort, um genauer zu sein :) –

+1

aha! Verdammt, jQuery macht all diese Tricks im Hintergrund! :) ORDENTLICH! Liebe jQuery --- Ref: http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin