gin 配置浏览器跨域请求

148 阅读1分钟

CORS (Cross-Origin Resource Sharing,跨域资源共享)是一个系统,它由一系列传输的HTTP头组成,这些HTTP头决定浏览器是否阻止前端 JavaScript 代码获取跨域请求的响应。

同源安全策略 默认阻止“跨域”获取资源。但是 CORS 给了web服务器这样的权限,即服务器可以选择,允许跨域请求访问到它们的资源。

三篇,不太长的文章。读一遍就通。

GIN配置跨域请求

在中间件中配置

func Cors() gin.HandlerFunc {
   return func(c *gin.Context) {
      method := c.Request.Method

      c.Header("Access-Control-Allow-Origin", "*")
      c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token, x-token")//x-token 为我们自己定义的一种header信息,名称为x-token
      c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PATCH, PUT")//或者直接* 允许所有请求
      c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
      c.Header("Access-Control-Allow-Credentials", "true")

      if method == "OPTIONS" {
         c.AbortWithStatus(http.StatusNoContent)
      }
   }
}

参考文章

  1. CORS (Cross-Origin Resource Sharing,跨域资源共享)
  2. 浏览器的同源策略
  3. 跨域资源共享 CORS 详解