angularjs - net - la aplicación iónica no puede conectar el servidor cors habilitado con $ http
system web http cors enablecors (2)
cordova-plugin-whitelist parece ser "obligatorio" en este momento.
instalarlo :
cordova plugin add cordova-plugin-whitelist
configurar config.xml
Puede mantener su configuración actual con * o cambiar por reglas más restrictivas
agregue una política html en index.html, también deberá agregar una Política. Para autorizar todo, aquí está:
<meta http-equiv="Content-Security-Policy" content="default-src *;
style-src ''self'' ''unsafe-inline''; script-src ''self'' ''unsafe-inline''
''unsafe-eval''"
Estoy tratando de construir una aplicación móvil con un marco iónico. Cuando mi aplicación intenta conectar el servidor para obtener json (el servidor es web api y cors está habilitado) simplemente devuelve 404 en genymotion y dispositivo real. Pero cuando ejecuto la aplicación en el navegador con ionic serve
todo funciona bien.
Estoy bastante seguro de que CORS es funcional. Aquí recibí el encabezado de respuesta mientras la aplicación trabajaba en el navegador.
Respuesta
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
Solicitud :
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 tiene <access origin="*"/>
esta línea en configuración
en mi app.js eliminé los encabezados X-Requerido-Con para todas las llamadas http.
.config([''$httpProvider'', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common[''X-Requested-With''];
}
])
Yo uso las solicitudes al servidor en mis clases de fábrica.
$http.get(serverPath + "/api/mobilerest/mainPage");
Cuando ejecuto la aplicación en Genymode o dispositivo real, la respuesta es 404 y statusText es ''no encontrado''. Estoy bastante seguro de que la API web está funcionando, la causa de este comportamiento está en las aplicaciones iónicas, mi aplicación es un archivo local y el protocolo es file: /// entonces el encabezado Origin es nulo en la solicitud, luego el servidor devuelve 404. También probé un archivo local sin ningún servidor me sale el mismo error que en la aplicación.
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
Me estoy perdiendo de algo ?
puedes entrar al archivo config.xml y editar esta línea
<access origin="*://*/*" />
y puede llamar a cualquier información sin intrusión de CORS en la consola gracias por aplicar este código a su aplicación iónica