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.
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)
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.
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.