| |
在 Gin 中提供了 middleware (中间件) 来做到在一个请求前后处理响应的逻辑,这里我们使用中间来做到在每次请求是添加上 Access-Control-Allow-Origin 头部
新建cors.go文件在middleware下,编写cors.go代码如下
//为Vue提供服务的跨域组件
func Cors() gin.HandlerFunc {
return func(ctx *gin.Context) {
ctx.Header("Access-Control-Allow-Origin", ctx.GetHeader("Origin")) // 可将将 * 替换为指定的域名
ctx.Header("Access-Control-Allow-Credentials", "true")
ctx.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization") //你想放行的header也可以在后面自行添加
ctx.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") //我自己只使用 get post 所以只放行它
ctx.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
ctx.Header("Access-Control-Allow-Credentials", "true")
//如果请求方法为 options 则写入200
if ctx.Request.Method == http.MethodOptions {
ctx.AbortWithStatus(http.StatusOK)
} else {
ctx.Next()
}
}
}