2011-09-16 18 views
7

Jak działa połączenie Ajax do strony serwera w aplikacji mobilnej (za pomocą PhoneGap). Ale, kiedy uruchomię to samo połączenie Ajax z normalnej strony HTML w przeglądarce PC, to nie działa. Domyślam się, że problemem jest domena krzyżowa. Ale jak to działa dobrze w aplikacji mobilnej.Jak działa połączenie Ajax w aplikacji mobilnej (PhoneGap), ale nie w przeglądarce PC?

Korzystanie z działa dobrze w przeglądarce komputera i aplikacji mobilnej (przy użyciu PhoneGap). Ale w aplikacji mobilnej bez datatype="jsonp" również działa dobrze.

Odpowiedz

12

Z PhoneGap FAQ:

Q. Chcę utworzyć aplikację dla PhoneGap, aby uzyskać dostęp zewnętrznie wdrożonych usług internetowych za pośrednictwem AJAX. W jaki sposób mogę rozwiązać problem z polisą bezpieczeństwa XMLHttpRequest o różnych domenach?

A. Zasady zabezpieczeń międzydomenowych nie mają wpływu na aplikacje PhoneGap. Ponieważ pliki html są wywoływane przez webkit za pomocą protokołu file: //, polityka bezpieczeństwa nie ma zastosowania. (w Androidzie możesz przyznać Android.permission.INTERNET swojej aplikacji, edytując plik AndroidManifest.xml)

+0

Dzięki za ans. Ale w przeglądarce PC używamy również protokołu file: // (po prostu otwórz stronę HTML w przeglądarce). to nie działa. Jeśli polityka bezpieczeństwa międzydomenowego nie ma wpływu na protokół file: //. Następnie proszę podać mi informacje na ten temat (może to być po prostu link do strony). –

+2

Zasady międzydomenowe w przeglądarce są nadal egzekwowane w przypadku plików lokalnych. * * * Nie będzie w stanie zrealizować żądania międzydomenowego z przeglądarki. –

+2

Ponadto różne przeglądarki nie mają takich samych zasad dotyczących domen lokalnych dla plików lokalnych. Zobacz także http://stackoverflow.com/questions/3988494/cross-domain-ajax-fails-even-for-a-local-file –

7

Aplikacje mobilne (PhoneGap, Adobe AIR, Titanium, Native, itp.) Nie mają tego samego źródła pochodzenia dla XHR żąda, aby przeglądarki desktopów. Mogą wykonywać dowolne połączenia międzydomenowe, których potrzebują. Dlatego działa dobrze na telefonie, a nie na pulpicie.

JSONP działa prawidłowo w obu przypadkach, ponieważ nie korzysta z XHR. Wykonuje żądanie między domenami za pomocą znacznika <skryptu>. Wiąże się to z polityką tego samego pochodzenia przeglądarki. JSONP może działać tylko wtedy, gdy usługa zdalna zwraca dane w postaci funkcji, która jest natychmiast wykonywana.

1

Podejrzewam, że wszystkie widoki oparte na WebView nie mają żadnych ograniczeń dotyczących żądań XHR między domenami. Innym sposobem na żądanie międzydomenowe jest most po stronie serwera.

0

możesz używać iqouta, aby wywoływać ajax wywoływania phonegap dla iqouta jest łatwy w użyciu !!

+0

użyj zakresu iqouta! na przykład – htmlove

Powiązane problemy