你是如何解决go语言框架 gin跨域问题 的 ?

我们在做前后端分离的项目,时常会听到跨域问题。经常看到有人的文章标题写着: 前端支持跨域,但显然也只是个噱头而已。

跨域的概念,本人才疏学浅,就不多说了。大家有兴趣可以搜搜相关的介绍。

今天就聊一聊在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语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任!

posted @ 2024-07-18 09:50  技术颜良  阅读(3)  评论(0编辑  收藏  举报