iris 框架在服务端解决跨域问题

1. 编写中间件,将允许跨域的header添加到响应头
// Cors
func Cors(ctx iris.Context) {
    ctx.Header("Access-Control-Allow-Origin""*")
    // ctx.Header("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization")
    // ctx.Header("Access-Control-Allow-Methods", "GET,POST,OPTIONS,HEAD,DELETE")
    if ctx.Method() == "OPTIONS" {
        ctx.Header("Access-Control-Allow-Methods""GET,POST,PUT,DELETE,PATCH,OPTIONS")
        ctx.Header("Access-Control-Allow-Headers""Content-Type, Accept, Authorization")
        ctx.StatusCode(204)
        return
    }
    ctx.Next()
}

func main() {
    app := iris.New()
    app.Use(recover.New())
  // 所有请求前面添加拦截器
    app.Use(Cors)
  // 如果API接口没有实现OPTIONS方法,需要给所有接口设置缺省的OPTIONS方法,不然捕捉不到对应API接口的OPTIONS请求。
    common := app.Party("/")
    {
        common.Options("*"func(ctx iris.Context) {
            ctx.Next()
        })
    }

    api := app.Party("/api")
    api.Get("/index", IndexHandler)

    app.Run(iris.Addr("0.0.0.0:8080"))
}
原文地址:https://www.cnblogs.com/sqtu/p/14593548.html