Próbuję zbudować aplikację mobilną z jonowym frameworkiem. Kiedy moja aplikacja próbuje połączyć się z serwerem, aby uzyskać json (serwer jest dostępny w api sieci web i cors), po prostu zwraca 404 na genymotion i prawdziwe urządzenie. Ale kiedy uruchomię aplikację w przeglądarce z ionic serve
wszystko działa dobrze.
Jestem pewien, że CORS działa. Tutaj nagłówek odpowiedzi dostałem podczas pracy aplikacji w przeglądarce.
Response
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:395
Content-Type:application/json; charset=utf-8
Date:Fri, 08 May 2015 20:24:04 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/7.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
Zapytanie:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, lzma, sdch
Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:*******:14400
Origin:http://192.168.0.28:8100
Pragma:no-cache
Referer:http://192.168.0.28:8100/
Config.xml ma <access origin="*"/>
tej linii w konfiguracji
w moich app.js usunąłem X-Zamówiony-with nagłówki dla wszystkich połączeń HTTP.
W prosty sposób uzyskuję żądania do serwera w moich klasach fabrycznych.
$http.get(serverPath + "/api/mobilerest/mainPage");
Po uruchomieniu aplikacji w trybie Genymode lub rzeczywistym urządzeniu odpowiedź wynosi 404, a statusText "nie znaleziono". Jestem pewien, że działa api sieci web, przyczyną tego zachowania są aplikacje oparte na jonach, moja aplikacja to plik lokalny, a protokół to plik: /// więc nagłówek Origin ma wartość null w żądaniu, następnie serwer zwraca 404. Próbowałem też lokalny plik bez serwera otrzymuję taki sam błąd jak w aplikacji.
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:server:14400
Origin:null
Pragma:no-cache
Czy czegoś brakuje?
Dziękuję @aorfevre to działało . Ale dlaczego nie mogłem znaleźć tej informacji w dowolnym miejscu :) – adt
Jeszcze raz dziękuję za udostępnienie @aorfevre.Tak jak nie mogłem domyślić się, dlaczego działa on w przeglądarce, a nie na moim urządzeniu. –
To też działa dla mnie. Nie jestem pewien, dlaczego nie jest to dodane do żadnej dokumentacji. Zostało to omówione na niektórych forach. –