2008-11-27 11 views
14

Czy istnieje sposób użycia XMLHttpRequest w połączeniu z innymi domenami?Czy mogę utworzyć XMLHttpRequest do innej domeny?

Chciałbym parsować niektóre pliki XML od Google bez konieczności korzystania z serwera, więc jest minimalistycznie skomplikowane do uruchomienia.

var req = getXmlHttpRequestObject(); 
... 
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true); 
     req.setRequestHeader("Content-Type","text/xml"); 
     req.onreadystatechange = setMessage; 
     req.send(null); 

Robi to po stronie serwera ma opcji przynajmniej wtedy nie musiałby prosić

Odpowiedz

10

Nie, nie teraz. Wierzę, że czytam, że plany/projekty są w pracach grup normalizacyjnych na przyszłość, więc możemy to bezpiecznie zrobić.

Luki w zabezpieczeniach skryptów między witrynami byłyby nierozsądne.

JSONP to możliwe rozwiązanie, jeśli obsługuje inne API witryn.

+0

jsonp to magiczne słowo , +1 –

2

Jest to problem z bezpieczeństwem, większość (wszystkich?) Przeglądarek nie pozwoli ci tego zrobić. Możesz użyć ukrytej ramki IFrame do wykonania pobierania, ale jest na tyle złożona, że ​​wystarczy użyć serwera (lub przełączyć się na inny język, jeśli nie muszę działać w przeglądarce).

+0

Nawet przy ukrytym elemencie iframe nadal nie ma dostępu do zawartości czegoś, co pochodzi z innej domeny –

0

To niemożliwe z powodu SOP (Same Origin Policy), że przeglądarka ma obecnie możliwość ograniczenia ataków XSS.
Będziesz musiał użyć skryptu po stronie serwera (PHP lub coś podobnego).

0

Możesz spróbować zrobić coś na serwerze. Tak więc, w twojej aplikacji przesyłasz żądanie do strony zdalnej, uzyskując wynik i zwracając go do klienta. Wywołanie AJAX wywołuje wtedy tylko własny serwer i działa.

+1

Nie przeczytałeś mojego opisu? – Thomaschaaf

0

Jest możliwe, aby XHR do innej domeny z HTML5.You mogą również inny wniosek protokołu z XHR podczas komunikacji z HTTP do innej strony internetowej.

1

Nie można wykonywać żądań między domenami, np. od example1.com do example2.com przez XMLHttpRequest lub jQuery (która jest opakowaniem XMLHttpRequest) ze względu na problem bezpieczeństwa po stronie klienta (przeglądarki). Może to być skutecznie zaimplementowane w nowoczesnej przeglądarce obsługującej HTML5 poprzez CORS (współdzielenie zasobów źródłowych, które nie może być dostępne w każdej przeglądarce klienta), więc rozwiązaniem jest wstawienie znacznika skryptu w example1.com na example2.com, a to rozwiązanie jest znane jako JSON-P (JSON z wyściółką), nazwa może wprowadzać w błąd, ponieważ dane mogą być w dowolnym formacie obsługiwanym przez serwer (example2.com), a jego kod implementacji jest podany w tym linku: http://newtechinfo.net/jsonp-for-cross-domain-ajax/