package router import ( "mh-server/controller" "mh-server/lib/status" "strings" "github.com/codinl/go-logger" "github.com/gin-gonic/gin" ) const API_VERSION_V1 = "v1" const API_VERSION_V2 = "v2" const API_VERSION_V3 = "v3" func CORSMiddleware(c *gin.Context) { origin := c.Request.Header.Get("origin") c.Writer.Header().Set("Access-Control-Allow-Origin", origin) c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") c.Writer.Header().Set("Access-Control-Allow-Headers", strings.Join([]string{ "Content-Type", "Content-Length", "XMLHttpRequest", "Accept-Encoding", "X-CSRF-Token", "token", "Cache-Control", }, ",")) c.Writer.Header().Set("Access-Control-Max-Age", "31536000") c.Writer.Header().Set("Access-Control-Allow-Methods", "POST,GET,PUT,OPTIONS") if c.Request.Method == "OPTIONS" { c.String(200, "ok") return } logger.Info(c.Request.RequestURI) c.Next() } // 通过钩子处理错误,防止主程序宕机 func WrapHandle(c *gin.Context) { defer func() { if err := recover(); err != nil { logger.Error("gin recover: ", err) controller.RespJson(c, status.InternalServerError, nil) return } }() c.Next() }