Gin解决接口跨域问题

Gin利用中间件解决接口跨域问题

      最近一段时间都在研究Go语言,并用Gin开发了一个API项目,部署线上后,遇到了跨域问题,网上查找了相关资料后,最终通过利用路由中间件解决问题,在这里跟大家分享下

      我们在route.go文件创建一个中间件,代码如下:

//路由中间件
func CORSMiddleware() 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,TokenId,TokenPower")
      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()
   }
}

然后我们添加路由中间件,代码如下:

//路由
func initRouter() *gin.Engine {
   //初始化路由
   router := gin.Default()
   //跨域中间件
   router.Use(CORSMiddleware())
   //定义入口
   router.Any("/", Test) //http://localhost:9999
}

这样就可以解决API项目跨域问题。

0条评论

发表评论