Wie funktioniert der Ajax-Anruf in der mobilen App (PhoneGap), aber nicht im PC-Browser?

7

Wie funktioniert der Ajax-Aufruf auf der Serverseite in der mobilen App (mit PhoneGap)? Aber, wenn ich den gleichen Ajaxanruf von der normalen HTML-Seite im PC-Browser laufe, funktioniert es nicht. Ich denke, das Problem ist Cross-Domain. Aber, wie es in der mobilen App gut funktioniert.

Mit JSONP funktioniert es im PC-Browser und in der mobilen App (mit PhoneGap). Aber in der mobilen App ohne datatype="jsonp" funktioniert auch gut.

    
Naga Harish M 16.09.2011, 05:58
quelle

4 Antworten

12

Von der PhoneGap-FAQ :

Q. Ich möchte eine Anwendung für phonegap erstellen, um über AJAX auf extern bereitgestellte Webdienste zuzugreifen. Wie kann ich das Problem mit dem beheben? domänenübergreifende Sicherheitsrichtlinie von XmlHttpRequest?

A. Die domänenübergreifende Sicherheitsrichtlinie wirkt sich nicht auf PhoneGap-Anwendungen aus. Da die HTML-Dateien von webkit mit dem Protokoll file: // aufgerufen werden, gilt die Sicherheitsrichtlinie nicht. (In Android können Sie android.permission.INTERNET Ihrer App zuweisen, indem Sie die Datei AndroidManifest.xml bearbeiten)

    
Paul Beusterien 16.09.2011, 15:06
quelle
7

Mobile Anwendungen (PhoneGap, Adobe AIR, Titanium, Native, usw.) haben nicht dieselbe Beschränkung für XHR-Anforderungen wie Desktop-Browser. Sie können beliebige domänenübergreifende Aufrufe durchführen. Deshalb funktioniert es am Telefon und nicht auf dem Desktop.

JSONP funktioniert in beiden Fällen gut, weil es XHR nicht verwendet. Es führt eine domänenübergreifende Anfrage durch, indem Sie das & lt; script & gt; Etikett. Es kommt also auf die gleiche Herkunftspolitik des Browsers an. JSONP kann jedoch nur funktionieren, wenn der Remote-Service die Daten in Form einer Funktion zurückgibt, die dann sofort ausgeführt wird.

    
Jason Dean 22.09.2011 16:59
quelle
1

Ich schätze, dass alle WebView-basierten Ansichten keine Einschränkungsregeln für domainübergreifende XHR-Anforderungen haben. Ein anderer Weg zu einer domänenübergreifenden Anfrage ist eine serverseitige Brücke.

    
Nick Nizovtsev 26.09.2011 07:21
quelle
0

Sie können iqouta verwenden, um einen Ajax-Anruf in Phonegap-Suche nach iqouta zu machen, es ist einfach zu benutzen !!

    
htmlove 26.09.2011 07:57
quelle

Tags und Links