Golang echo middleware перенаправляет с пустой страницы
Я тестирую редирект о 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
})
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
статический обработчик.
Поскольку вы не звоните, он останавливает цепочку и ничего не делает.