2012-08-27 17 views
14

Mam aplikację HTML5/JavaScript, która została oryginalnie napisana do uruchamiania w niektórych samochodach. Zasadniczo muszę skonfigurować moją aplikację, by działała w przeglądarce, aby uzyskać prostą prezentację dla klienta.Wyłącz tę samą zasadę pochodzenia w przeglądarce Safari Safari

Używam jQuery .ajax, który powoduje problemy z powodu zasad o tym samym pochodzeniu. Znalazłem wiele sposobów na wyłączenie tego w przeglądarkach na komputerach, ale nie na urządzeniach mobilnych.

Moim celem jest pokazanie aplikacji na iPadzie w Mobile Safari. Czy istnieje sposób, aby tymczasowo wyłączyć zasady dotyczące tego samego pochodzenia na iPadzie?

+1

+1, bardzo chciałbym na to odpowiedzieć. –

+0

Czy próbowałeś ustawić nagłówek Access-Control-Allow-Origin: * na serwerze? –

+0

Niestety nie mam kontroli nad serwerem, do którego dzwonię AJAX. Moim krótkoterminowym rozwiązaniem było udostępnienie skryptu php proxy na tym samym serwerze, na którym hostowałem mój html/js. Na szczęście usługi, których potrzebowałem, w końcu dodały nagłówki CORS do swoich odpowiedzi, co pozwoliło mi zrezygnować z mojego skryptu proxy. – Danny

Odpowiedz

0

Musisz uruchomić serwer WWW, a nie protokół plików.

+0

Musiałby on działać na serwerze WWW, aby w ogóle uzyskać dostęp do iPada. Problem polega na tym, że nie mam kontroli nad usługami, które nazywam, które nie zawierają nagłówków CORS w odpowiedziach. Rozwiązaniem, które wymyśliłem, było posiadanie skryptu php proxy na tym samym serwerze co mój html/js. – Danny

0

Zasadniczo potrzebujesz nagłówka.

Umieść ten kod u góry strony, na którą chcesz wysyłać żądania w różnych domenach.

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

Uważaj przy użyciu *, ponieważ pozwala to dowolnej stronie internetowej na wysyłanie żądań do strony, z której wysyłany jest ten nagłówek.

* Można zastąpić domenami, takimi jak example.com, example.net.

1

miałem ten sam problem z aplikacją Sencha. I rozwiązane poprzez ustawienie ścieżki bazowej do mojego javascript wywołań Ajax Przykład:

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

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

I od mobilny dostęp ją http://192.168.1.200/myapp

Moim problemem było to, że z przenośnych uzyskać dostęp tylko z IP, ale ajax call były skierowane do localhost.

Mam nadzieję, że ta sztuczka pomaga.

Powiązane problemy