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

Go Fiber框架配置CORS后仍出现跨域错误求助

解决方案:Fiber + Next.js CORS 错误修复

核心问题定位

Postman/直接浏览器访问正常,说明API本身无问题;跨域请求报错No 'Access-Control-Allow-Origin' header,本质是Fiber的CORS中间件未正确生效,大概率是中间件注册顺序错误或配置细节不符。

具体修复步骤

1. 确保CORS中间件优先注册

CORS中间件必须是第一个被挂载的中间件,要放在所有路由定义之前。如果路由先匹配,请求不会经过CORS中间件,自然不会添加跨域头。

正确代码示例:

package main

import (
	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/cors"
)

func main() {
	app := fiber.New()

	// 第一步:注册CORS中间件(必须在路由之前)
	app.Use(cors.New(cors.Config{
		AllowOrigins: "http://localhost:3000", // 明确指定前端Origin,比*更稳妥
		AllowMethods: "GET,POST,HEAD,PUT,DELETE,PATCH",
		AllowHeaders: "Origin,Content-Type,Accept",
	}))

	// 第二步:定义你的API路由
	app.Get("/tasks", func(c *fiber.Ctx) error {
		// 你的业务逻辑
		return c.JSON(fiber.Map{
			"id":          1,
			"title":       "Test Task",
			"description": "Fix CORS issue",
			"is_completed": false,
		})
	})

	app.Listen(":8080")
}

2. 排查配置细节

  • 如果前端请求带了Credentials(比如Cookie),需要将AllowCredentials设为true,同时AllowOrigins不能用*,必须指定具体域名。
  • 检查是否有自定义请求头:如果Axios设置了额外的请求头(比如Authorization),需要把对应头添加到AllowHeaders中。

3. 验证响应头

启动Fiber服务后,用浏览器开发者工具查看请求的响应头,确认是否存在Access-Control-Allow-Origin: http://localhost:3000。如果仍不存在,检查:

  • 是否正确安装了Fiber CORS中间件:执行go get github.com/gofiber/fiber/v2/middleware/cors确保依赖正确。
  • 是否有其他中间件拦截了请求:比如错误处理中间件提前返回响应,导致CORS头未被添加。

4. 前端侧辅助检查

确保Axios请求没有额外配置导致跨域问题,比如:

// 确保没有全局设置不必要的withCredentials,除非后端允许
axios.defaults.withCredentials = false;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:57:55