我用的是golang杜松子酒,我得到了这个错误
我知道这是一个CORS错误,我在NodeJS中修复了它,但这次我使用的是golang,因此无法修复它。
我绕过了这个包https://github.com/gin-contrib/cors
并修改了代码
r := gin.Default()
r.Use(cors.New(cors.Config{
AllowOrigins: []string{"http://localhost:5173"},
AllowMethods: []string{"PUT", "PATCH", "POST"},
AllowHeaders: []string{"Origin"},
ExposeHeaders: []string{"Content-Length", "Content-Type"},
AllowFiles: true,
AllowCredentials: true,
AllowOriginFunc: func(origin string) bool {
return origin == "http://localhost:5173"
},
}))
`
但问题是,这个错误仍然出现。
2条答案
按热度按时间toe950271#
浏览器正在抱怨,因为服务器不允许,在允许的头中,头'Content-type'。在允许的标题列表中添加此标题,则CORS将停止抱怨。
m0rkklqb2#
您似乎对
cors.Config
结构中ExposeHeaders
字段的用途感到困惑。我能理解你的困惑:字段名-ExposeResponseHeaders
(以牺牲简洁性为代价)可能会更清楚,其文档也没有特别说明……ExposeHeaders
结构域指定哪些 response header名称将在Access-Control-Expose-Headers
header中列出,这指示浏览器让客户端访问这些响应header的值。但是,AFAICT,这不是你想在这里做的。相反,您希望允许包含名为Content-Type
的头的请求。要做到这一点,您需要修改CORS配置中AllowHeaders
结构体字段的值,如下所示:请注意,根据Fetch标准,在CORS配置中允许
Origin
作为请求头是不必要的,因为该头由浏览器而不是客户端管理。此外,您使用
AllowOriginFunc
是多余的。AllowOrigins
已经足够满足您当前的需求。最后,您可能会发现jub0bs/fcors比gin-contrib/cors(here is an example)更容易配置,但我当然有偏见。