Estoy usando ionic framework y angularjs. Uso Chrome para ver mis registros, pero aquí estoy haciendo una página de inicio de sesión. Estoy tratando de publicar los datos ingresados por el usuario para servir, pero recibo este error como .
OPTIONS http://aflaree.com/qrcodeservice/Service1.svc/login y este es el siguiente error XMLHttpRequest cannot load http://aflaree.com/qrcodeservice/Service1.svc/login Response for preflight has invalid HTTP status code 405 después de leer un blog. Me imagino que hay una extensión CORS desde la cual permite la solicitud ajax Lo intenté también, pero no puedo encontrar por qué aparecen estos dos errores. aquí está mi código
https://plnkr.co/edit/Dz0aFsLqoQcnCxht00z3?p=preview
mi código funciona bien en el dispositivo, pero recibo un error en Chrome. Si alguien sabe por qué, ayúdame.
CORS en realidad especifica que se deben realizar dos solicitudes al servidor en una llamada AJAX (si se aplican ciertas condiciones, como enviar encabezados personalizados).
La primera solicitud (la que tiene el método OPTIONS ) se llama verificación previa y se usa para verificar si es seguro enviar la solicitud completa al servidor. La respuesta del servidor debe contener un encabezado Access-Control-Allow-Origin válido que contenga la URL del cliente o * .
Su servidor (y no el cliente) es el que necesita admitir CORS. Parece que está utilizando .Net para ello, por lo que es posible que desee echar un vistazo aquí para saber cómo configurar IIS.
Puede leer más sobre CORS aquí .
Si está utilizando Chrome, obtenga el complemento "Allow-Control-Allow-Origin". Esto le permitirá ignorar todos los errores de CORS.
Funciona en dispositivos móviles porque ionic tiene un complemento cordova "cordova-plugin-whitelist". En su "config.xml" verá la línea de forma predeterminada, lo que significa que su aplicación puede acceder a cualquier URL.
Desafortunadamente, cuando se prueba a través del navegador, el complemento cordova no está activo.
Para dispositivos iOS, verifique también el protocolo utilizado. Usar HTTPS en lugar de HTTP resolvió el problema para mí.