You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastify集成fastify-cors后swagger默认标签多出未配置OPTIONS接口如何解决

解决方案

方案1:配置fastify-cors隐藏自动生成的OPTIONS路由(最推荐)

fastify-cors插件本身提供hideOptionsRoute配置项,开启后自动生成的预检OPTIONS路由会被标记为隐藏状态,fastify-swagger默认不会渲染隐藏路由,仅需修改CORS插件注册代码即可:

fastify.register(require('fastify-cors'), {
  hideOptionsRoute: true // 新增该配置项
});
fastify.register(require('./routes/routes'));

如果配置后仍然展示OPTIONS接口,检查fastify-swagger的注册配置,确保exposeHiddenRoutes配置项为false(默认值即为false,无特殊需求不需要额外设置)。

方案2:配置fastify-swagger过滤OPTIONS类型接口

如果不需要修改CORS插件的配置,可以直接在swagger的注册逻辑中添加路由过滤规则,屏蔽所有OPTIONS方法的接口:

fastify.register(require('fastify-swagger'), {
  // 保留你原本的swagger配置,比如接口文档标题、描述、路由前缀等
  // 新增transform配置过滤路由
  transform: (schema) => {
    if (schema.method === 'OPTIONS') return null
    return schema
  }
})

方案3:关闭自动生成预检路由,手动定义OPTIONS接口

如果需要完全控制预检路由的生成逻辑,可以关闭fastify-cors自动生成OPTIONS路由的能力,仅按需为需要的路径定义预检接口:

fastify.register(require('fastify-cors'), {
  preflight: false // 关闭自动生成预检路由的逻辑
});
// 后续可手动为需要跨域的路径添加OPTIONS路由,自定义swagger的展示规则

内容的提问来源于stack exchange,提问作者Pradip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 05:51:03