为了账号安全,请及时绑定邮箱和手机立即绑定

没有“访问控制-允许-源”标头...我的Beego服务器配置错误了吗?

没有“访问控制-允许-源”标头...我的Beego服务器配置错误了吗?

Go
catspeake 2022-09-05 17:42:41
我正在使用Beego / Golang作为我的后端,并且在尝试从我的域中获取URL时遇到问题。我在Google上搜索并输入了这个,但它仍然不起作用,我仍然有相同的错误。No 'Access-Control-Allow-Origin' headerfunc main()// (my own code) FilterUser is used to redirect users to login // when they try to access some pages without logging inbeego.InsertFilter("/*", beego.BeforeExec, FilterUser)// This is what I found on Googlebeego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{        AllowAllOrigins: true,        AllowMethods: []string{"GET, POST, PUT, DELETE, OPTIONS"},        AllowHeaders: []string{"Origin"},        ExposeHeaders: []string{"Content-Length"},        AllowCredentials: true,    }))
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

您正在同时设置 和 。对Beego的cors包的源代码的随意检查表明,因此,对预检请求的响应包含以下标头组合:AllowCredentialsAllowAllOrigins


Access-Control-Allow-Origin: *

Access-Control-Allow-Credentials: true

但是,Fetch标准(定义了CORS的工作原理)指示浏览器拒绝这种组合 - 因为遵守它将非常不安全。请参阅有关 CORS 的 MDN Web Docs 的相关段落:


响应凭据请求时,服务器必须在标头的值中指定源,而不是指定“”通配符。Access-Control-Allow-Origin*


解决此问题的一种方法是允许,不是所有的起源,而只允许前端的起源;我在下面用作占位符:https://example.com


beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{

    AllowOrigins: []string{"https://example.com"}, // <---

    // -snip-

    AllowCredentials: true,

}))


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信