2
0
mirror of https://github.com/cowardmrx/gin_cors.git synced 2026-04-08 15:30:42 +08:00

:tada:gin的cors跨域中间件

This commit is contained in:
coward
2021-12-16 19:46:16 +08:00
commit deb395a24e
6 changed files with 165 additions and 0 deletions

34
cors.go Normal file
View File

@@ -0,0 +1,34 @@
package gin_cors
import (
"github.com/gin-gonic/gin"
"net/http"
)
type Cors struct {
AccessControlAllowOrigins []string
AccessControlAllowHeaders string
AccessControlAllowMethods string
AccessControlExposeHeaders string
AccessControlAllowCredentials string
}
func (cors *Cors) CorsMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
for _, v := range cors.AccessControlAllowOrigins {
if v == c.Request.Header.Get("Origin") {
c.Writer.Header().Set("Access-Control-Allow-Origin", v)
c.Writer.Header().Set("Access-Control-Allow-Headers", cors.AccessControlAllowHeaders)
c.Writer.Header().Set("Access-Control-Allow-Methods", cors.AccessControlAllowMethods)
c.Writer.Header().Set("Access-Control-Expose-Headers", cors.AccessControlExposeHeaders)
c.Writer.Header().Set("Access-Control-Allow-Credentials", cors.AccessControlAllowCredentials)
}
}
if c.Request.Method == http.MethodOptions {
c.AbortWithStatus(http.StatusNoContent)
}
c.Next()
}
}