2012-08-27 19 views
14

Ich habe eine HTML5/JavaScript App, die ursprünglich für bestimmte Autos geschrieben wurde. Grundsätzlich muss ich meine App so einrichten, dass sie im Browser für eine einfache Demo für einen Kunden ausgeführt wird.Deaktivieren der gleichen Ursprungsrichtlinie in Mobile Safari

Ich benutze jQuery .ajax, die Probleme aufgrund der gleichen Herkunft Richtlinie verursacht. Ich habe viele Möglichkeiten gefunden, dies in Desktop-Browsern zu deaktivieren, aber nicht in mobilen.

Mein Ziel ist es, die App auf einem iPad in Mobile Safari zu demonstrieren. Gibt es eine Möglichkeit, die gleiche Ursprungsrichtlinie auf einem iPad vorübergehend zu deaktivieren?

+1

+1, würde ich auch eine Antwort darauf lieben. –

+0

Haben Sie versucht, den Header Access-Control-Allow-Origin: * auf dem Server zu setzen? –

+0

Leider habe ich keine Kontrolle über den Server, zu dem ich AJAX-Anrufe mache. Meine kurzfristige Lösung bestand darin, ein PHP-Proxy-Skript auf demselben Server zu hosten, auf dem ich meine html/js gehostet habe. Glücklicherweise fügten die Dienste, die ich brauchte, ihren Antworten endlich CORS-Header hinzu, was es mir erlaubte, mein Proxy-Skript abzuschaffen. – Danny

Antwort

0

Sie müssen einen Webserver ausführen, nicht das Dateiprotokoll.

+0

Es müsste auf einem Webserver laufen, um überhaupt vom iPad aus zugreifen zu können. Das Problem ist, dass ich keine Kontrolle über die Dienste habe, die ich aufrufen, die keine CORS-Header in ihren Antworten enthalten. Die Lösung, die ich gefunden habe, war, ein PHP-Proxy-Skript auf dem gleichen Server wie meine html/js zu hosten. – Danny

0

Grundsätzlich benötigen Sie eine Kopfzeile.

Fügen Sie diesen Code oben auf der Seite ein, an die Sie domänenübergreifende Anfragen senden möchten.

<?php header("Access-Control-Allow-Origin: *"); ?> 

Seien Sie mit dem * vorsichtig, da dies eine Website ermöglicht es Anfragen an die Seite, von der die Header aus gesendet wird, zu senden.

Das * kann durch Domänen wie beispiel.com, beispiel.net ersetzt werden.

1

Ich hatte das gleiche Problem mit einem sencha App. Ich nahm mir vor, indem eine Basispfad zu meinem Javascript Ajax-Aufrufe Einstellung Beispiel:

var BASEPATH = 'http://192.168.1.200/myapp'; 

$.ajax({ 
    url: BASEPATH+'/someaction' 
}); 

Und vom Handy darauf zugreifen mit http://192.168.1.200/myapp

Mein Problem war, dass das von Handy Zugang erhalten nur mit IP aber Ajax Anruf war auf localhost.

Hoffe, dass dieser Trick hilft.

Verwandte Themen