登录
首页 >  Golang >  Go问答

光纤 CORS 中间件返回 null Access-Control-Allow-Origin 标头值

来源:stackoverflow

时间:2024-02-12 17:09:20 388浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《光纤 CORS 中间件返回 null Access-Control-Allow-Origin 标头值》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在使用 go fiber web 框架及其补充 cors 中间件组件来实现我的 restful api。我按照官方文档中的指定配置 cors,但是,相当奇怪的是,当我继续从 curl 或 postman 调用 api 时,“access-control-allow-origin”标头 出现在响应中,但其值为:null,因此来自任何主机的请求似乎已被接受。

这是我根据当前文档进行的设置(您可以在此处找到):

//instantiate sever and store to local
apiserver = fiber.new()

//setup cors for a specific endpoint.
apiserver.use("/api/v1/authentications/manage/login", cors.new(cors.config{
    alloworigins:     "http://[my-domain].com",
    allowcredentials: true,
}))

现在没有立即或明显的错误,我能够成功编译该应用程序。但是,当部署生成的应用程序并且我使用 curl 向端点发出请求并转储生成的响应标头时,我会看到以下内容:

HTTP/1.1 401 Unauthorized
< Date: Mon, 07 Jun 2021 11:28:31 GMT
< Content-Type: application/json
< Content-Length: 130
< Connection: keep-alive
< Vary: Origin
< Access-Control-Allow-Origin: 
< Access-Control-Allow-Credentials: true

请注意:401 响应按预期返回,因为(如上所述)这是一个身份验证端点,并且我在请求中省略了身份验证凭据。但是,即使提供了正确的凭据,也会向调用端点的任何客户端返回 200 ok 响应。当然,现在我可以自己手动将必要的标头附加到响应中,但我真的更愿意使用 cors 中间件,因为它比手动方法干净得多。


正确答案


响应中存在“Access-Control-Allow-Origin”标头,但其值为:null,因此来自任何主机的请求似乎都被接受。

事情不是这样的。标头 Access-Control-Allow-Origin 应包含发出请求的特定客户端的来源,或包含通配符 *,以便浏览器接受。如果原始标头不满足您允许的来源,则响应标头将为空字符串,如 you can see in the source code

理论要掌握,实操不能落!以上关于《光纤 CORS 中间件返回 null Access-Control-Allow-Origin 标头值》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>