javascript - have - response for preflight has invalid http status code 405 web api
Ionic+Angular: cómo evitar el "404 no encontrado(del caché)" después de la solicitud POST? (5)
esta pregunta apunta en parte a mi pregunta anterior: Ionic + Angular POST request return state 404
Pero no pude encontrar una solución de trabajo.
El problema es siguiente:
si solicito desde la aplicación móvil que se ejecuta en el dispositivo siempre recibo la respuesta 404:
Request Method:POST
Status Code:404 Not Found (from cache)
Request Headersview source
Accept:application/json, text/plain, */*
Content-Type:text/plain
Origin:file://
User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36
Request Payloadview source
{,…}
Pero si probé la misma solicitud en el escritorio utilizando el complemento Postman en el navegador Chrome, siempre recibo la respuesta 200 con los datos que necesito.
Pensé que era un problema causado por el método http angular, pero en la publicación anterior me di cuenta de que no es cierto.
¿Cómo puedo evitar esto por favor? ¿Debo establecer algunos encabezados en HTML de la aplicación, durante la solicitud o en el lado del servidor (PHP)?
Muchas gracias por cualquier consejo.
EDITAR:
Intenté también establecer el caché: falso de esta manera:
$http({
method : ''POST'',
url : $scope.remoteUrl,
data: postData,
headers: headersData,
cache: false,
timeout: 10000
// success response
})
Pero sin suerte.
Después de muchas horas, encontré una solución que funcionaba: ejecutar cordova plugin add cordova-plugin-whitelist
En mi caso, ya había configurado config.xml e index.html en origen, como se menciona aquí y en otros lugares.
Tuve el mismo problema y pude resolverlo agregando el siguiente complemento:
ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
Tuve el mismo problema, nada me ayudó, entonces simplemente eliminé el plugin de la lista blanca:
cordova plugin remove cordova-plugin-whitelist
luego renuellada
cordova plugin add cordova-plugin-whitelist
entonces funcionó
Tuve un problema similar con el inicio de sesión de Firebase en mi dispositivo Android, pero pude iniciar sesión en el navegador.
cordova plugin remove cordova-plugin-whitelist
cordova plugin add cordova-plugin-whitelist
Usó las líneas anteriores para resolver el problema.
Mucha gente está experimentando eso .
Me encontré con el mismo problema. Parece que tiene que ver con una nueva política de seguridad en las nuevas versiones de Cordova.
Así es como lo resolví:
Instalé el complemento de la lista blanca de Cordova :
cordova plugin add cordova-plugin-whitelist
Luego, agregue su política de contenido en su index.html
como metaetiqueta (usando su propio host o ''*'' para aceptar todas las solicitudes):
<meta http-equiv="Content-Security-Policy" content="default-src ''self'' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src ''self'' ''unsafe-inline''; media-src *;script-src ''self'' localhost:35729 ''unsafe-eval'' ''unsafe-inline'';">
default-src
se usa para solicitudes generales; el host ws://localhost:35729
se usa para live-reload en ionic serve
.
script-src
se usa para la ejecución segura de scripts
unsafe-inline
e unsafe-eval
son necesarios para que angular funcione correctamente.
data: gap: https://ssl.gstatic.com
solo se usa en iOS.
self
significa el host actual del archivo index.html
.
Tendrás que agregar el tuyo para que tus solicitudes funcionen. No olvides agregar el protocolo y el puerto si no son estándar
Puede omitir la metaetiqueta si no la quiere, pero obtendrá un montón de advertencias del complemento de la lista blanca.
Más información sobre cómo configurar esto en el archivo Léame del complemento .
Luego reconstruye tu aplicación, y debería funcionar de nuevo.