2016-03-02 18 views
5

I zostały zaktualizowane istniejącą aplikację do Cordova 6.0.0 i mam problemy z systemem go na urządzeniu z systemem iOS z Xcode 7.2.1 kierowania iOS 9.Cordova 6 aplikacja nie może załadować z pliku: // ścieżka

mam zainstalowane wtyczki WKWebView: cordova-plugin-wkwebview-engine 1.0.2

uruchamiając aplikację, która zbudowana jest z angularjs, jedna z pierwszych rzeczy, to stara się zrobić, to otworzyć plik json:

$http.get('data/config.json').success(function(data) { 
    // do stuff 
}); 

Ale ten błąd w konsola przeglądarki internetowej:

XMLHttpRequest cannot load file:///var/mobile/Containers/Bundle/Application/ 
E9D74C94-ADC6-410F-9F41-7CE63CB7877F/Milk.app/www/data/config.json. Cross 
origin requests are only supported for HTTP. 

W pliku config.xml mamy:

<access origin="*" subdomains="true" /> 

Dlaczego plik : // Żądanie zablokowania takiego i jak mogę to naprawić?

* edit *

Według plugin page:

„W iOS 9, Apple stała się kwestią obecną przez iOS 8, gdzie nie może załadować plików lokalizacyjnych za pomocą file: //, a musi korzystać z lokalnego serwera WWW , ale nadal nie możesz używać XHR z protokołu file: // bez włączonego CORS na twoim serwerze. "

Co mają na myśli: "Twój serwer"? Jaki serwer? Ładujemy lokalny plik, nie ma serwera!

+0

Która wersja jest używana? –

+0

@Meiko to iOS 9.Biorąc pod uwagę, że problem, w którym lokalny serwer sieciowy jest najwyraźniej * naprawiony * dla iOS 9, nie rozumiem części dotyczącej włączania CORS na lokalnym serwerze. Innymi słowy brzmi to tak, jakby nie zostało naprawione! – Ade

+0

Jeśli używasz Cordova 6 i [email protected], to nie potrzebujesz tej wtyczki, Cordova używa wtwebview: http://cordova.apache.org/news/2016/01/28/tools-release. html – Joerg

Odpowiedz

6

EDIT:

jonowa zespół pracuje na widelcu wtyczki WKWebViewEngine i ustaliła niektóre kwestie XHR, nie jestem pewien, czy ten jest stały. Można spojrzeć na https://github.com/driftyco/cordova-plugin-wkwebview-engine

Old odpowiedź: Jest to znany problem, lokalne file:// url XmlHttpRequests nie są dozwolone w WKWebViewEngine (https://issues.apache.org/jira/browse/CB-10143)

Dla bardziej znanych problemów widzą https://issues.apache.org/jira/browse/CB-10237?jql=labels%20%3D%20wkwebview-known-issues

Jeśli chcesz Aby wywołać połączenie lokalne ajax, należy użyć wtyczki wkwebview-engine-localhost (https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine-localhost)

Lub wtyczki Telerik's WKWebView (https://github.com/Telerik-Verified-Plugins/WKWebView).

Oba będą używać lokalnego serwera WWW, który rozwiązuje niektóre ze znanych ograniczeń WKWebView.

+0

Interesujące. Bez wtyczki Polyfill Cordova 6 (cordova-ios 4) zasadniczo nie jest gotowa do użycia w wielu przypadkach. – Ade

+0

cordova-ios 4 jest w pełni użyteczny, ale z UIWebView. WKWebView w większości przypadków nie nadaje się do użytku z powodu błędów Apple, więc miejmy nadzieję, że naprawimy je na iOS 10. W każdym razie, w większości przypadków UIWebView jest wystarczająco dobry, większość ludzi nie potrzebuje WKWebView – jcesarmobile

+0

OK, myślałem, że UIWebView został zastąpiony w cordova-ios 4. – Ade

Powiązane problemy