本文小编为大家详细介绍“Golang gin跨域问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang gin跨域问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
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()
}
}
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,
})
}
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跨域问题怎么解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。