Я пытаюсь создать мобильное приложение с ионным каркасом. Когда мое приложение пытается подключиться к серверу, чтобы получить json (сервер - это веб-api и cors), он просто возвращает 404 на genymotion и real device. Но когда я запускаю приложение в браузере с ionic serve
, все работает нормально.
Я уверен, что CORS функционирует. Здесь заголовок ответа я получил, пока приложение работает в браузере.
ответ
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
Запрос:
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 имеет <access origin="*"/>
эту строку в конфигурации
в моем app.js Я удалил X-Requested-с заголовками для всех http-вызовов.
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
])
Я просто использую запросы на сервер в классах factory.
$http.get(serverPath + "/api/mobilerest/mainPage");
Когда я запускаю приложение в Genymode или реальном устройстве, ответ равен 404, а statusText "не найден". Я уверен, что работает web api, причина такого поведения в приложениях на основе ионных приложений, мое приложение - это локальный файл, а протокол - файл:///, поэтому заголовок Origin имеет нулевой запрос, тогда сервер возвращает 404. Я также попробовал локальный файл без какого-либо сервера, я получаю ту же ошибку, что и в приложении.
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
Я что-то пропустил?