2011-09-16 5 views
7

Come la chiamata Ajax alla pagina del server funziona come prefetto nell'app mobile (utilizzando PhoneGap). Ma, quando eseguo la stessa chiamata Ajax dalla normale pagina HTML nel browser del PC, non funziona. Immagino che il problema sia cross domain. Ma come funziona bene nell'app mobile.Come funziona la chiamata Ajax nell'app mobile (PhoneGap), ma non nel browser del PC?

Utilizzo di JSONP funziona correttamente nel browser del pc e nell'app mobile (utilizzando PhoneGap). Ma nell'app mobile senza datatype="jsonp" funziona anche bene.

risposta

12

Dal PhoneGap FAQ:

D. Voglio creare un'applicazione per PhoneGap per accedere ai servizi Web distribuite esternamente tramite AJAX. Come posso risolvere il problema con la politica di sicurezza dei domini incrociati di XmlHttpRequest?

A. La politica di sicurezza tra domini non influenza le applicazioni PhoneGap. Poiché i file html vengono chiamati da webkit con il protocollo file: //, la politica di sicurezza non si applica. (in Android, puoi concedere android.permission.INTERNET alla tua app modificando AndroidManifest.xml)

+0

Grazie per voi e per voi. Ma, nel browser per PC, usiamo anche il protocollo file: // (basta aprire la pagina HTML nel browser). non funziona il lavoro. Se la politica di sicurezza tra domini non influisce sul protocollo file: //. Quindi per favore forniscimi alcune informazioni a riguardo (potrebbe essere solo un link post). –

+2

I criteri relativi ai domini diversi nel browser sono ancora applicati per i file locali. * Non * sarà in grado di effettuare la richiesta interdominio dal browser. –

+2

Inoltre, i diversi browser non hanno lo stesso criterio per i domini per i file locali Vedi anche http://stackoverflow.com/questions/3988494/cross-domain-ajax-fails-even-for-a-local-file –

7

Le applicazioni mobili (PhoneGap, Adobe AIR, Titanium, Native, ecc.) Non hanno la stessa restrizione dell'origine per XHR richiede i browser desktop. Possono effettuare qualsiasi chiamata interdominio che vogliono. Ecco perché funziona bene sul telefono e non sul desktop.

JSONP funziona bene in entrambi perché non utilizza XHR. Effettua una richiesta interdominio utilizzando il tag dello script <. Quindi aggira la politica dell'origine stessa del browser. JSONP può funzionare solo se il servizio remoto restituisce i dati sotto forma di una funzione che viene quindi immediatamente eseguita.

1

Immagino che tutte le viste basate su WebView non abbiano regole di restrizione sulle richieste XHR tra domini. Un altro modo per una richiesta interdominio è un bridge sul lato server.

0

è possibile utilizzare iqouta per effettuare una chiamata ajax in ricerca phonegap per iqouta è facile da usare !!

+0

usa lo scope iqouta! per esempio – htmlove

Problemi correlati