Golang echo 中间件重定向到空页面
Golang echo middleware redirect with empty page
我测试一个关于echo的重定向,当我只使用重定向的方法时它可以成功显示login.html页面,但是如果我使用中间件测试,它总是显示login.html
的空页面,我错过了什么?
e.Group("*.html", func(next echo.HandlerFunc) echo.HandlerFunc { //1
return func(c echo.Context) error {
uri := c.Request().URL.String()
log.Println("uri:" + uri)
if uri != "/login.html" && uri != "/favicon.ico" {
c.Redirect(http.StatusSeeOther, "login.html")
return nil
}
return nil
}
})
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
e.GET("/aa", func(c echo.Context) error { //2
c.Redirect(http.StatusSeeOther, "login.html")
return nil
})
我看到您错过了 next
继续请求链的调用。
参见此处示例:https://echo.labstack.com/cookbook/middleware/
// ServerHeader middleware adds a `Server` header to the response.
func ServerHeader(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
c.Response().Header().Set(echo.HeaderServer, "Echo/3.0")
return next(c)
}
}
看到 return next(c)
,它继续处理请求并抛出所有中间件,最终抛出 login.html
静态处理程序。
因为你没有调用,所以它停止链并且什么也不做。
我测试一个关于echo的重定向,当我只使用重定向的方法时它可以成功显示login.html页面,但是如果我使用中间件测试,它总是显示login.html
的空页面,我错过了什么?
e.Group("*.html", func(next echo.HandlerFunc) echo.HandlerFunc { //1
return func(c echo.Context) error {
uri := c.Request().URL.String()
log.Println("uri:" + uri)
if uri != "/login.html" && uri != "/favicon.ico" {
c.Redirect(http.StatusSeeOther, "login.html")
return nil
}
return nil
}
})
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
e.GET("/aa", func(c echo.Context) error { //2
c.Redirect(http.StatusSeeOther, "login.html")
return nil
})
我看到您错过了 next
继续请求链的调用。
参见此处示例:https://echo.labstack.com/cookbook/middleware/
// ServerHeader middleware adds a `Server` header to the response.
func ServerHeader(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
c.Response().Header().Set(echo.HeaderServer, "Echo/3.0")
return next(c)
}
}
看到 return next(c)
,它继续处理请求并抛出所有中间件,最终抛出 login.html
静态处理程序。
因为你没有调用,所以它停止链并且什么也不做。