我们在做前后端分离的项目,时常会听到跨域问题。经常看到有人的文章标题写着: 前端支持跨域,但显然也只是个噱头而已。
跨域的概念,本人才疏学浅,就不多说了。大家有兴趣可以搜搜相关的介绍。
今天就聊一聊在go的web框架gin里面怎么解决跨域问题,以及在实践过程中踩的坑。大概已经抄了mdnice
一小部分功能了,差个图床和目录就差不多好了。它大概长这样:
还不太完善,有一些样式也没优化到位,说实话还是mdnice好用更多
解决方案
在go中的gin需要跨域中间件,使用Use()可以把它看中间件.
在入口文件写入
func Cors() gin.HandlerFunc {
return func(context *gin.Context) {
method := context.Request.Method
context.Header("Access-Control-Allow-Origin", "*")
context.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
context.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
context.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
context.Header("Access-Control-Allow-Credentials", "true")
if method == "OPTIONS" {
context.AbortWithStatus(http.StatusNoContent)
}
context.Next()
}
}
在main.go入口文件
func main() {
router := gin.Default()
router.Use(Cors()) //解决跨域
gin.SetMode(gin.DebugMode) //开启dug
router.Run(":8000") //映射端口
}
重新执行再次尝试请求即可
参考链接:https://blog.csdn.net/weixin_58425109/article/details/122624951
更多相关Go语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任!
标签:Control,跨域,Allow,Access,context,go,gin From: https://www.cnblogs.com/cheyunhua/p/18308803