1. 首页
  2. 主题
  3. Go Web开发

gin框架开启web跨域

shuiche · · 4145 次点击
![](https://images.cnblogs.com/cnblogs_com/xuange306/1699852/o_200414134249img1.jpg) ## 前言 gin开启跨域,只需要添加一个全局中间件到路由器即可 ## gin 中间件 gin的中间件可以添加到全局, 也可以添加到单个路由上 **添加到全局** ```golang r := gin.New() r.Use(gin.Logger()) r.Use(gin.Recovery()) ``` > 这里的两个中间件就是 gin.Default()帮我们初始化的两个中间件 **添加到单个路由** ```golang authorized := r.Group("/") { authorized.Use(AuthRequired()) } ``` ## gin开启跨域代码案例 gin开启跨域其实还是很简单的, 演示代码如下: ```golang package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.Use(Cors()) // 主要是这里 r.GET("/test", function(){ c.String(200, "success") }) _ = r.Run(":8080") } // 开启跨域中间件函数 func Cors(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type") // 允许的请求头, 如果有自定义的Header都要添加到这里,不然浏览器会报跨域错误 c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Token, Timestamp. AppId") // 允许的请求方式都需要添加 c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE") if c.Request.Method == "OPTIONS" { c.AbortWithStatus(204) return } defer func() { if err := recover(); err != nil { public.LOGGER.Error("Panic info is: %v", err) public.LOGGER.Error("Panic info is: %s", debug.Stack()) } }() c.Next() } ```
这个有点问题吧? 我自己做个一个,记得分为options和普通请求,返回的内容不完全一样的。
#3
更多评论
function -》 func(c *gin.Context) {
#1

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中