From 40d25f7dcabc1d4e64edab86f64254ff4823f405 Mon Sep 17 00:00:00 2001 From: boojack Date: Fri, 13 Jan 2023 07:06:15 +0800 Subject: [PATCH] fix: skip api error for static middleware (#941) --- server/common.go | 5 +++++ server/embed_frontend.go | 7 ++++--- server/server.go | 5 +---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/server/common.go b/server/common.go index 054fe6b7..1ac53c45 100644 --- a/server/common.go +++ b/server/common.go @@ -22,6 +22,11 @@ func DefaultGetRequestSkipper(c echo.Context) bool { return c.Request().Method == http.MethodGet } +func DefaultAPIRequestSkipper(c echo.Context) bool { + path := c.Path() + return common.HasPrefixes(path, "/api") +} + func (server *Server) DefaultAuthSkipper(c echo.Context) bool { ctx := c.Request().Context() path := c.Path() diff --git a/server/embed_frontend.go b/server/embed_frontend.go index fa7ed59e..7de421e0 100644 --- a/server/embed_frontend.go +++ b/server/embed_frontend.go @@ -25,18 +25,19 @@ func embedFrontend(e *echo.Echo) { // Use echo static middleware to serve the built dist folder // refer: https://github.com/labstack/echo/blob/master/middleware/static.go e.Use(middleware.StaticWithConfig(middleware.StaticConfig{ + Skipper: DefaultAPIRequestSkipper, HTML5: true, Filesystem: getFileSystem("dist"), })) - g := e.Group("assets") - g.Use(func(next echo.HandlerFunc) echo.HandlerFunc { + assetsGroup := e.Group("assets") + assetsGroup.Use(func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { c.Response().Header().Set(echo.HeaderCacheControl, "max-age=31536000, immutable") return next(c) } }) - g.Use(middleware.StaticWithConfig(middleware.StaticConfig{ + assetsGroup.Use(middleware.StaticWithConfig(middleware.StaticConfig{ HTML5: true, Filesystem: getFileSystem("dist/assets"), })) diff --git a/server/server.go b/server/server.go index 62baacf9..6cbff948 100644 --- a/server/server.go +++ b/server/server.go @@ -56,9 +56,7 @@ func NewServer(ctx context.Context, profile *profile.Profile) (*Server, error) { e.Use(middleware.Gzip()) e.Use(middleware.CSRFWithConfig(middleware.CSRFConfig{ - Skipper: func(c echo.Context) bool { - return s.DefaultAuthSkipper(c) - }, + Skipper: s.DefaultAuthSkipper, TokenLookup: "cookie:_csrf", })) @@ -73,7 +71,6 @@ func NewServer(ctx context.Context, profile *profile.Profile) (*Server, error) { })) e.Use(middleware.TimeoutWithConfig(middleware.TimeoutConfig{ - Skipper: middleware.DefaultSkipper, ErrorMessage: "Request timeout", Timeout: 30 * time.Second, }))