【问题标题】:Golang echo middleware redirect with empty pageGolang echo中间件重定向与空页面
【发布时间】:2021-06-25 00:28:05
【问题描述】:

我测试一个关于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
    })

【问题讨论】:

  • 您是否使用 echo 提供静态文件?可以出示一下代码吗?

标签: go-echo


【解决方案1】:

我发现您错过了 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 静态处理程序。

当你没有调用时,它会停止链条并且什么都不做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多