2010-08-21 10 views
22

wiem czy na mojej własnej stronie internetowej, jeśli użytkownik jest na: http://www.example.com/form.php
samej polityki Origin - AJAX i przy użyciu API publiczne

i robię ajax żądania od tej strony: http://example.com/responder.php

To się nie uda z powodu polityki Same origin (subdomena jest inna).

Próbuję zrozumieć, jak to jest, że żądania AJAX mogą pobierać dane z API jak flickr, gdy żądanie i serwer są oczywiście różne.


Edit:

np: Dlaczego to działa kod?

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

(Referred this Community Wiki) Czy używając Cross Origin Resource Sharing?

Dzięki!

Odpowiedz

17

Istnieje kilka znanych metod obchodzenia zasad dotyczących tego samego pochodzenia. Popularną techniką jest użycie "Wtrysku znacznika skryptu", takiego jak w JSONP. Ponieważ znacznik <script> nie jest ograniczony przez zasadę Same Origin, skrypt w domenie innej firmy może dostarczyć kod wykonywalny, który współdziała z funkcją zwrotną. Możesz sprawdzić w sekcji „Porady” w następującym artykule dla dalszego czytania na ten temat:

Możesz być także zainteresowany sprawdzanie co następuje przepełnienie stosu po dalszego czytania na innych technik, aby obejść te same zasady pochodzenia:


UPDATE: Dalsze zaktualizowany pytanie:

Cytując z dokumentacji jQuery na $.getJSON(): "callback ="

Jeśli adres URL zawiera ciąg w adresie URL żądanie jest traktowane jako JSONP.

+0

Nie jest tak, że element jest zwolniony z tej samej zasady pochodzenia, ponieważ JavaScript nie ma dostępu do zwracanych danych pierwotnych. Zależy to od strony trzeciej dostarczającej kod wykonywalny, który współdziała z funkcją, którą zapewniasz. – Quentin

+1

@David: Dzięki. Zaktualizowano moją odpowiedź, aby była dokładniejsza :) –

+1

aha! cholera, jQuery robi wszystkie te sztuczki, obsługuje je w tle! :) COŚ! Uwielbiam jQuery --- Ref: http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin

Powiązane problemy