馃寪 Configuraci贸n CORS y proxies en Next.js
Aprende c贸mo manejar correctamente las pol铆ticas de CORS y configurar proxies en tus proyectos con Next.js para comunicarte con APIs externas de forma segura.
馃Л ¿Qu茅 es CORS?
CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad que impide que una p谩gina web haga solicitudes a otro dominio diferente al que sirvi贸 la p谩gina, a menos que el servidor lo permita expl铆citamente.
En otras palabras, si tu aplicaci贸n Next.js corre en http://localhost:3000 y necesita datos de una API en
https://api.misitio.com, el navegador bloquear谩 la solicitud si el servidor no env铆a los encabezados CORS adecuados.
Access to fetch at ... from origin 'http://localhost:3000' has been blocked by CORS policy
馃敡 Configurar CORS en una API interna
En Next.js, puedes definir tus propias rutas de API dentro de /pages/api.
Si necesitas permitir solicitudes desde otros dominios, puedes configurar manualmente los encabezados de CORS:
馃搫 pages/api/hello.js
export default function handler(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if (req.method === 'OPTIONS') {
return res.status(200).end();
}
res.status(200).json({ message: 'CORS habilitado correctamente 馃殌' });
}
Este ejemplo permite solicitudes desde cualquier origen (*), pero en producci贸n deber铆as limitarlo a dominios espec铆ficos:
res.setHeader('Access-Control-Allow-Origin', 'https://tusitio.com');
馃摝 Usando la librer铆a cors
Otra opci贸n m谩s elegante es usar el paquete cors con un middleware. Inst谩lalo con:
npm install cors
Y luego crea un middleware reutilizable en lib/init-middleware.js:
馃搫 lib/init-middleware.js
export default function initMiddleware(middleware) {
return (req, res) =>
new Promise((resolve, reject) => {
middleware(req, res, (result) => {
if (result instanceof Error) return reject(result);
return resolve(result);
});
});
}
馃搫 pages/api/data.js
import Cors from 'cors';
import initMiddleware from '../../lib/init-middleware';
const cors = initMiddleware(
Cors({
methods: ['GET', 'POST', 'OPTIONS'],
origin: ['https://tusitio.com', 'http://localhost:3000'],
})
);
export default async function handler(req, res) {
await cors(req, res); // Ejecuta el middleware
res.json({ message: 'CORS configurado con 茅xito 馃帀' });
}
Con este enfoque, puedes controlar exactamente qu茅 dominios y m茅todos HTTP est谩n permitidos.
馃洶️ Configurar un proxy para evitar CORS
Una t茅cnica com煤n para evitar problemas de CORS en desarrollo es crear un proxy interno que redirija las solicitudes a la API externa desde tu propio servidor Next.js.
Por ejemplo, puedes crear una ruta API que act煤e como intermediario:
馃搫 pages/api/proxy.js
export default async function handler(req, res) {
const response = await fetch('https://api.externa.com/data');
const data = await response.json();
res.status(200).json(data);
}
As铆, tu frontend puede llamar a /api/proxy sin problema de CORS,
y Next.js se encarga de comunicarse con la API externa desde el servidor.
Esquema b谩sico de comunicaci贸n con proxy interno
✅ Conclusi贸n
- CORS es una capa de seguridad que protege al usuario final.
- En desarrollo, puedes habilitar CORS temporalmente o usar proxies.
- En producci贸n, configura CORS solo para tus dominios permitidos.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias