POST 请求中缺少 CORS header Allow-Origin

CORS header Allow-Origin missing in POST requests

我知道有很多与 CORS 相关的问题,但我似乎找不到这个问题的答案。

这是我的服务器端 golang 代码(我们使用 github.com/rs/cors go 模块): 我们基本上有一组需要授权的 API header 和一些不需要授权的 API(将结帐与结帐视为访客功能)

allowedOrigins := []string{"http://localhost:3000", "http://localhost:3001"}
//allowedHeaders := []string{"Authorization"}
c := cors.New(cors.Options{AllowedOrigins: allowedOrigins, AllowCredentials: true})
handler := c.Handler(r)

我发现的是:

// if allowcredentials is set to true, then all non auth requests go through but all auth requests return cors error

// if allowedHeaders: authorization is set then all **authenticated and NON authenticated** POST requests fail. GET works fine for both cases.

更具体地说:当我尝试执行 POST 请求,我在上面设置了 AllowedHeaders:authorization 选项。

如果我评论该行(如您在上面看到的),那么非身份验证请求将完美通过,并且 AllowedOrigins hader 将在 OPTIONS 请求中发回..

已修复....

https://github.com/rs/cors 

过得不错CorsOptions Debug:true。我用它来检查发生了什么,当我硬编码允许授权进入我的服务器时,POST 请求随后抱怨,因为我也在发送 content-type(由客户端自动发送( axios),我没有指定它)。服务器几乎说“我只识别授权 header”...我添加了 Content-Type,它现在可以工作了!

allowedHeaders := []string{"Authorization", "Content-Type"}