import type { VextMiddleware } from "../../types/middleware.js"; import type { VextCorsConfig } from "../../types/app.js"; /** * createCorsMiddleware — CORS 跨域中间件工厂 * * 内置中间件 #2,职责: * 1. 处理 OPTIONS preflight 请求 — 直接返回 204(不进入后续中间件链) * 2. 为所有响应注入 CORS 相关头(Access-Control-Allow-Origin 等) * * 配置项(config.cors): * - enabled: 是否启用 CORS(默认 true);false 时跳过所有 CORS 处理 * - origins: 允许的 Origin 列表(默认 ['*']);'*' 允许所有来源 * - methods: 允许的 HTTP 方法列表(默认常用 7 种方法) * - headers: 允许的请求头列表(默认 ['Content-Type', 'Authorization']) * - credentials: 是否允许携带 Cookie(默认 false) * - maxAge: preflight 缓存时间(秒,默认 86400 = 24 小时) * * Origin 匹配逻辑: * - origins 包含 '*':直接设置 Access-Control-Allow-Origin: * * (credentials = true 时降级为回显请求 Origin,因为 '*' 与 credentials 不兼容) * - origins 为具体域名列表:检查请求 Origin 是否在列表中, * 匹配则回显该 Origin,不匹配则不设置 CORS 头(浏览器会拒绝) * * 禁用内置 CORS 后的自定义方式: * 若需要更复杂的 CORS 逻辑(如动态 Origin 校验、按租户区分), * 可通过插件使用 app.use() 注册自定义 CORS 中间件并将 cors.enabled 设为 false。 * * @param config CORS 配置(从 VextConfig.cors 提取) * @returns VextMiddleware */ export declare function createCorsMiddleware(config: VextCorsConfig): VextMiddleware;