diff --git a/server/middleware/00.cors.ts b/server/middleware/00.cors.ts new file mode 100644 index 0000000..d03e86d --- /dev/null +++ b/server/middleware/00.cors.ts @@ -0,0 +1,38 @@ +/** + * Middleware CORS - Se ejecuta ANTES de la autenticación + * + * Maneja las solicitudes OPTIONS (preflight) para rutas de API externa + * y agrega headers CORS a las respuestas. + */ + +// Rutas que necesitan CORS (API externa) +const CORS_ROUTES = [ + '/api/messages/send', + '/api/mcp' +] + +export default defineEventHandler((event) => { + const path = getRequestURL(event).pathname + + // Solo aplicar a rutas que necesitan CORS + const needsCors = CORS_ROUTES.some(route => path.startsWith(route)) + + if (!needsCors) { + return + } + + // Agregar headers CORS a todas las respuestas de estas rutas + setResponseHeaders(event, { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', + 'Access-Control-Allow-Headers': 'Content-Type, Authorization', + 'Access-Control-Max-Age': '86400' // Cache preflight por 24 horas + }) + + // Si es una solicitud OPTIONS (preflight), responder inmediatamente + if (getMethod(event) === 'OPTIONS') { + // Responder con 204 No Content + setResponseStatus(event, 204) + return '' + } +})