我正在使用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,
}))
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消