/** * Shared CORS configuration for all API routes. * * Centralizes the Access-Control-Allow-Origin header so it can be * configured via the CORS_ORIGIN environment variable instead of * being hardcoded as "*" in every route handler. * * Usage: * import { CORS_HEADERS, handleCorsOptions } from "@/shared/utils/cors"; * * // In route responses: * return new Response(body, { headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }); * * // For OPTIONS preflight: * export function OPTIONS() { return handleCorsOptions(); } */ export const CORS_ORIGIN = process.env.CORS_ORIGIN || "*"; /** * Standard CORS headers to spread into any Response. * @type {Record} */ export const CORS_HEADERS = { "Access-Control-Allow-Origin": CORS_ORIGIN, "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", "Access-Control-Allow-Headers": "Content-Type, Authorization, x-api-key, anthropic-version", }; /** * Handle CORS preflight (OPTIONS) request. * @returns {Response} 204 No Content with CORS headers */ export function handleCorsOptions() { return new Response(null, { status: 204, headers: CORS_HEADERS }); }