Angular: Solicitud de origen distinto bloqueada
Pues justo esto me pasa, yo tengo una API escrita en Node y estoy haciendo mis adaptaciones del tutorial para usarla ;)
La cosa es que cuando hago la petición me lanza:
¿Les soy sincero? No tengo tantos conocimientos, no se que es CORS ni nada por el estilo.
¡Cualquier ayuda es bienvenida!
La cosa es que cuando hago la petición me lanza:
Solicitud desde origen distinto bloqueada: la política de mismo origen impide leer el recurso remoto en http://localhost:8080/omi/v1/clientes. Esto se puede arreglar moviendo el recurso al mismo dominio o activando CORS.
Aunque en el servidor me detecta que hubo una petición get y que este respondió 200 OK.
¿Les soy sincero? No tengo tantos conocimientos, no se que es CORS ni nada por el estilo.
¡Cualquier ayuda es bienvenida!
Hola Javier.
Sucede que los navegadores tienen una política de seguridad de no hacer peticiones Ajax a dominios diferentes al dominio donde se está ejecutando tu script, esto para evitar ataques de robo de información entre otras cosas.
Para el curso yo utilicé un servidor en Heroku y habilite CORS (Cross-Origin Resource Scharing) a cualquier otro dominio, esto generalmente no lo haces en una aplicación real porque es peligroso, cualquiera puede consultar el API (que esa fue mi intención) pero en sistemas reales tendrías que definir que dominios vas a permitir, en fin... en ambientes de desarrollo es común habilitar CORS y no hay ningún problema con eso, al habilitarlo el navegador obtiene los permisos necesarios para hacer peticiones Ajax a ese dominio.
En tu caso los puertos son diferentes por eso es que no es posible hacer peticiones a tu servidor Node, si usas Express puedes habilitar CORS de la siguiente manera:
Sucede que los navegadores tienen una política de seguridad de no hacer peticiones Ajax a dominios diferentes al dominio donde se está ejecutando tu script, esto para evitar ataques de robo de información entre otras cosas.
Para el curso yo utilicé un servidor en Heroku y habilite CORS (Cross-Origin Resource Scharing) a cualquier otro dominio, esto generalmente no lo haces en una aplicación real porque es peligroso, cualquiera puede consultar el API (que esa fue mi intención) pero en sistemas reales tendrías que definir que dominios vas a permitir, en fin... en ambientes de desarrollo es común habilitar CORS y no hay ningún problema con eso, al habilitarlo el navegador obtiene los permisos necesarios para hacer peticiones Ajax a ese dominio.
En tu caso los puertos son diferentes por eso es que no es posible hacer peticiones a tu servidor Node, si usas Express puedes habilitar CORS de la siguiente manera:
app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); });
Si no quieres habilitar CORS también puedes mover todos tus scripts del curso al servidor node para que no tengas problemas, lo que se te haga más fácil.
Saludos
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.