使用Fiber需配置CORS中间件解决跨域问题:开发可快速启用默认配置,但生产环境必须精细化控制,如指定可信域名、动态匹配环境或仅对/api路径启用,并确保带Cookie请求时AllowCredentials为true且AllowOrigins非通配符。

在使用Go语言Fiber框架开发API服务时,前端页面运行在http://localhost:3000而Fiber后端监听在http://localhost:3001,浏览器会因同源策略拦截请求,必须配置CORS中间件才能让fetch或axios正常接收响应数据。
用内置cors中间件快速启用
第一步:安装fiber包(若尚未安装)→ 运行go get github.com/gofiber/fiber/v2;
第二步:导入github.com/gofiber/fiber/v2/middleware/cors包;
第三步:在app.Use(cors.New())中启用默认配置——它会自动允许所有源、所有方法、所有头,并支持预检请求;
这一步操作起来很简单,直接把app.Use(cors.New())加在app := fiber.New()之后即可生效,但【生产环境严禁使用默认配置】,否则任何网站都能调用你的API并携带凭证。
精细化控制跨域权限
方法一:指定可信前端域名
app.Use(cors.New(cors.Config{
AllowOrigins: "https://your-frontend.com,http://localhost:3000",
AllowCredentials: true,
AllowHeaders: "Content-Type,Authorization",
}))
注意:多个域名用英文逗号分隔,不能加空格;【AllowCredentials为true时,AllowOrigins不能为*】,否则浏览器拒绝接受响应。
方法二:动态匹配开发/生产环境
用os.Getenv("ENV")读取环境变量,开发时设为"*",生产时填入白名单数组;
方法三:仅对/api路径启用CORS
改用app.Group("/api").Use(cors.New()),避免影响静态资源或健康检查接口。
处理带Cookie的认证请求
前端调用fetch时必须显式设置credentials: "include";
后端配置中AllowCredentials: true必须开启;
同时AllowOrigins必须是具体域名,不可用通配符;
这三者缺一不可,否则浏览器会静默丢弃Set-Cookie响应头或拒绝返回响应体。


















