Gin 跨域中间件

18 min read
// Cors 开启跨域函数
package middlewares

  

import (

"github.com/gin-gonic/gin"

"net/http"

)

  

func Cors() gin.HandlerFunc {

return func(c *gin.Context) {

	method := c.Request.Method
	
	origin := c.Request.Header.Get("Origin")
	
	if origin != "" {
	
			c.Header("Access-Control-Allow-Origin", "*") // 可将将 * 替换为指定的域名
			
			c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
			
			c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
			
			c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
			
			c.Header("Access-Control-Allow-Credentials", "true")
			
			}
			
			if method == "OPTIONS" {
			
				c.AbortWithStatus(http.StatusNoContent)
			
			}
			
			c.Next()
	
	}

}

使用

func main() {
	r := gin.Default()
	r.Use(Cors()) // 主要是这里
	r.GET("/jssdk", func(c *gin.Context) {

		c.JSON(200, gin.H{
			"message": "ok",
		})
	})

	r.Run()
}