Iris 路由设置动态路由参数后,会导致跨域问题,原因不详
Iris 路由设置动态路由参数后,会导致跨域问题,原因不详~
哪位大神知道原因的,指点下。。。
// 以下 5 个路由同时出现时,详情、编辑、删除这三个接口会出现跨域问题,
// 去掉动态路由参数校验 `uint64` 后,就能解决跨域问题!
var Router = initRouter()
// 跨域处理
func initRouter() *iris.Application {
router := iris.New()
router.Use(func(ctx iris.Context) {
ctx.Header("Access-Control-Allow-Origin", "*")
ctx.Header("Access-Control-Allow-Credentials", "true")
ctx.Header("Access-Control-Allow-Headers", "*")
ctx.Header("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin, X-Requested-With, Content-Type, Accept, X-Access-Token,Token")
ctx.Header("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")
if ctx.Method() == "OPTIONS" {
ctx.StatusCode(http.StatusOK)
return
}
ctx.Next()
})
router.AllowMethods(iris.MethodOptions)
return router
}
// 列表
Router.Get("answer", xxx.getList)
// 详情
Router.Get("answer/{id:uint64}", xxx.getDetail) // 加上动态路由参数会导致跨域
// 新建
Router.Post("answer", xxx.createAnswer)
// 编辑
Router.Put("answer/{id:uint64}", xxx.updateAnswer) // 加上动态路由参数会导致跨域
// 删除
Router.Delete("answer/{id:uint64}", xxx.deleteAnswer) // 加上动态路由参数会导致跨域
没看过lirs,不懂,不会,不明白,我是来打酱油的
我也遇到这个问题了,不带参数可以正常访问,带参数的时候 就显示跨域了,大佬 你这个问题解决了吗?
ctx.StatusCode(http.StatusOK)
这里不对 ,跨域允许options应该返回204.辣鸡iris连cors中间件都没吗?
据说在版本
master v12.2.0
主分支中已经被修复,产生原因 动态路径类型断言时不恰当的处理引起,升级试试