gin跨域解决方案
cors1.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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" , origin) //主要设置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" , "false" ) c.Set( "content-type" , "application/json" ) } if method == "OPTIONS" { c.AbortWithStatus(http.StatusNoContent) } c.Next() } } |
cors2.go
1
2
3
4
5
6
7
8
9
10
11
12
13
|
func Cors() gin.HandlerFunc { return cors. New (cors.Config{ AllowAllOrigins: false , AllowOrigins: nil , AllowOriginFunc: func (origin string ) bool { return true }, AllowMethods: [] string { "GET" , "POST" , "PUT" , "PATCH" , "DELETE" , "HEAD" }, AllowHeaders: [] string { "Authorization" , "ts" , "Accept" , "Origin" , "DNT" , "X-CustomHeader" , "Keep-Alive" , "User-Agent" , "X-Requested-With" , "If-Modified-Since" , "Cache-Control" , "Content-Type" , "Content-Range" , "Range" }, AllowCredentials: true , MaxAge: 10 * time.Minute, }) } |
使用中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package router import ( "github.com/gin-gonic/gin" "goproejct/controllers" "goproejct/middlewares" //引入中间件goproject是项目名 根据自己情况 ) func InitRouter() { router := gin. Default () router.Use(Cors()) //使用中间件 v1 := router.Group( "v1" ) { v1.POST( "/login" , controllers.Login) v1.POST( "/regist" , controllers.Regist) } router.Run( ":8000" ) } |
以上就是Golang gin跨域解决方案的详细内容,更多关于gin-跨域解决方案的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/guyouyin123/p/14168035.html