2008-11-27 15 views
6

Z tego co rozumiem, ze względu na egzekwowanie zasad "tego samego pochodzenia" w obecnych przeglądarkach, niemożliwe jest uzyskanie danych z XmlHttpRequest wysłanych do innej domeny niż oryginalna domena JavaScript.W jaki sposób można korzystać ze zdalnych serwisów WWW ze skryptu po stronie klienta?

Mam prawie zerowe doświadczenie w tej kwestii, więc jestem zdezorientowany, że usługi internetowe nie mogą być używane przez Javascript. Czy oznacza to, że aplikacje internetowe z funkcją Ajax mogą wchodzić w interakcje tylko ze sobą, nie wywołując usług świadczonych przez inne domeny? Jak działają "mash-upy"? Domyślam się, że usługi są zużywane po stronie serwera, a następnie dane są przesyłane do klienta za pośrednictwem lokalnych wywołań Ajax. Nie wiem

Jedynym sposobem, jaki mogę sobie wyobrazić, aby uzyskać po stronie klienta korzystanie z usług, byłoby pobranie pliku JavaScript bezpośrednio z domeny docelowej usługi internetowej za pomocą znacznika <script>, a następnie wykorzystanie jego interfejsu API do interakcji ze zdalną domeną.

Czy ktoś może mnie oświecić?

+0

Właściwie dobrze to pojmujesz. Pamiętaj tylko, że Ajax to zwykły stary http. –

+0

Tak, trafiłeś prosto w głowę ... w tym prace wokół! –

Odpowiedz

6

W swoim pytaniu Twój wspomniano <skrypt> trick. JSONP opiera się na tym. It was formally proposed almost 3 years ago by Bob Ippolito. Nie daje ci to prawa do mówienia o pochodzeniu skryptu. Pochodzenie jest zdefiniowane przez twoją stronę internetową, a nie przez to, co zawiera. Działa tylko dlatego, że serwer opakowuje JSON w funkcję Calback, która powinna być zdefiniowana w kodzie i zostanie wykonana po skrypcie > po załadowaniu. Najbardziej znanym przykładem JSONP będą usługi Yahoo, w tym Flickr.

Inną techniką jest użycie window.name do przeniesienia informacji. This technique was detailed by Kris Zyp four month ago. Dodatkowo jego artykuł porównuje transport window.name z JSONP. Nie znam żadnego wysokiego dostawcy usług, który obsługuje ten nowy transport. Oczywiście zmieni się z czasem.

Oczywiście, powinienem wspomnieć o nadchodzącym Microsoft XDomainRequest. Planowane jest dostarczenie go z IE8 i żaden inny producent nie chciał go wspierać, ale został przedstawiony do włączenia w HTML 5. XDR jest użytecznym elementem funkcjonalności, ale podejrzewam, że będzie kilka razy zmieniany, zanim zostanie przyjęty.

Jeśli zajrzałeś do linków, prawdopodobnie już wiesz, że wszystkie te metody wymagają pewnego poziomu współpracy z zewnętrznego serwera. Nie możesz korzystać z usług losowych według własnego uznania. Jeśli musisz skorzystać z usługi, która nie współpracuje, jedynym rozwiązaniem jest proxy poprzez własny serwer z wszystkimi powiązanymi problemami: wątpliwa legalność, zmniejszona wydajność, zwiększone obciążenie serwera, zmniejszona liczba połączeń między przeglądarką użytkownika i twój serwer i tak dalej.

3

Wystarczy popatrzeć na jsonp, który działa w tym samym polityki pochodzenia użyciu prawie podejście opisujesz, po prostu upewnij się zaufać gdzie je dostać od ...

+0

Dzięki, zrobię kilka badań na temat JSONP. – Franck

Powiązane problemy