From fb028170b3b9ed0cc0374ca2a36dfc7e763c66e2 Mon Sep 17 00:00:00 2001 From: DarthSim Date: Sat, 10 Feb 2024 20:35:51 +0300 Subject: [PATCH] Explicitly set Content-Type header; Ensure that response body contains at least one byte --- router/router.go | 7 +++++-- server.go | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/router/router.go b/router/router.go index 7aa6fc58..e8cff6ba 100644 --- a/router/router.go +++ b/router/router.go @@ -2,15 +2,16 @@ package router import ( "encoding/json" + "fmt" "net" "net/http" "regexp" "strings" nanoid "github.com/matoous/go-nanoid/v2" - log "github.com/sirupsen/logrus" "github.com/imgproxy/imgproxy/v3/config" + "github.com/imgproxy/imgproxy/v3/ierrors" ) const ( @@ -156,9 +157,11 @@ func (r *Router) ServeHTTP(rw http.ResponseWriter, req *http.Request) { } } - log.Warningf("Route for %s is not defined", req.URL.Path) + LogResponse(reqID, req, 404, ierrors.New(404, fmt.Sprintf("Route for %s is not defined", req.URL.Path), "Not found")) + rw.Header().Set("Content-Type", "text/plain") rw.WriteHeader(404) + rw.Write([]byte{' '}) } func replaceRemoteAddr(req *http.Request, ip string) { diff --git a/server.go b/server.go index c50e79e1..976aa7b4 100644 --- a/server.go +++ b/server.go @@ -151,6 +151,7 @@ func withPanicHandler(h router.RouteHandler) router.RouteHandler { router.LogResponse(reqID, r, ierr.StatusCode, ierr) + rw.Header().Set("Content-Type", "text/plain") rw.WriteHeader(ierr.StatusCode) if config.DevelopmentErrorsMode { @@ -181,11 +182,16 @@ func handleHealth(reqID string, rw http.ResponseWriter, r *http.Request) { ierr = ierrors.Wrap(err, 1) } + if len(msg) == 0 { + msg = []byte{' '} + } + // Log response only if something went wrong if ierr != nil { router.LogResponse(reqID, r, status, ierr) } + rw.Header().Set("Content-Type", "text/plain") rw.Header().Set("Cache-Control", "no-cache") rw.WriteHeader(status) rw.Write(msg)