Habilitando CORS en producción
Clase 39 de 43 • Curso de Express.js 2018
Contenido del curso
Template Engines y archivos estáticos
Creando un API Restful
Conectando Express.js con servicios externos
Middlewares: En el medio del request
- 20

Qué es un middleware y qué tipos existen
01:47 min - 21

Manejo de errores usando un middleware
09:36 min - 22

Validación de datos usando un middleware
03:06 min - 23

Implementando Sentry para el manejo de log de errores
01:14 min - 24

Qué es Joi y Boom y cómo configurar Joi
08:06 min - 25

Configurando Boom y nuestra página 404
14:47 min - 26

Middlewares populares
02:34 min
Autenticación en Express.js
Testing
Deployment
- 35

Buenas prácticas para el despliegue en producción
03:36 min - 36

npm script
05:01 min - 37

Añadiendo manejo de cache y seguridad con helmet
09:47 min - 38

Cómo usar las variables de entorno para diferente ambientes
01:06 min - 39

Habilitando CORS en producción
Viendo ahora - 40

Cómo funciona y por qué es importante el uso de HTTPS
01:08 min - 41

Desplegando con Now y detectando vulnerabilidades con npm audit
07:16 min - 42

Automatizar el chequeo de vulnerabilidades con snyk
00:52 min - 43

Conclusiones
01:46 min
El Intercambio de Recursos de Origen Cruzado (Cross-Origin Resource Sharing) es un mecanismo que agrega unos encabezados (Headers) adicionales HTTP para permitir que un user agent (generalmente un navegador) obtenga permisos para acceder a los recursos de un servidor en un origin distinto (dominio) del que pertenece.
Por ejemplo una solicitud de origen cruzado seria hacer una petición AJAX desde una aplicación que se encuentra en https://dominio-a.com para cargar el recurso https://api.dominio-b.com/data.json.
Por razones de seguridad, los navegadores restringen las solicitudes HTTP de origen cruzado iniciadas dentro de un script.
Si necesitamos permitir request desde un dominio diferente al del servidor podemos usar el middleware cors para permitirlo, pero es importante no dejarlo expuesto a todos los dominios.
Habilitar CORS para todos los request (No recomendado en producción)
const express = require("express"); const cors = require("cors"); const app = express(); app.use(cors()); app.get("/products/:id", function(req, res, next) { res.json({ msg: "This is CORS-enabled for all origins!" }); }); app.listen(8000, function() { console.log("CORS-enabled web server listening on port 8000"); });
Habilitar CORS para los request especificos de un cliente (Recomendado para producción)
const express = require("express"); const cors = require("cors"); const app = express(); const corsOptions = { origin: "http://example.com" }; app.use(cors(corsOptions)); app.get("/products/:id", function(req, res, next) { res.json({ msg: "This is CORS-enabled for only example.com." }); }); app.listen(8000, function() { console.log("CORS-enabled web server listening on port 8000"); });
Debemos tener en cuenta que para aplicaciones server-side es poco probable que necesiten el uso de CORS debido a que las aplicaciones conviven en el mismo dominio. Sin embargo, es buena practica habilitarlo para los llamados externos de nuestra API.
Más información sobre el middleware cors en https://expressjs.com/en/resources/middleware/cors.html