From 6ec633dbe6ee87bc3c8d38809b6f738f36d2bc6c Mon Sep 17 00:00:00 2001 From: Ngalim Siregar Date: Thu, 4 Jul 2019 08:06:04 +0700 Subject: [PATCH] Update http status code --- gin.go | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/gin.go b/gin.go index d01b869e..e27b1579 100644 --- a/gin.go +++ b/gin.go @@ -446,16 +446,11 @@ func redirectTrailingSlash(c *Context) { if prefix := path.Clean(c.Request.Header.Get("X-Forwarded-Prefix")); prefix != "." { p = prefix + "/" + req.URL.Path } - code := http.StatusMovedPermanently // Permanent redirect, request with GET method - if req.Method != "GET" { - code = http.StatusTemporaryRedirect - } - req.URL.Path = p + "/" if length := len(p); length > 1 && p[length-1] == '/' { req.URL.Path = p[:length-1] } - redirectRequest(c, code) + redirectRequest(c) } func redirectFixedPath(c *Context, root *node, trailingSlash bool) bool { @@ -463,21 +458,23 @@ func redirectFixedPath(c *Context, root *node, trailingSlash bool) bool { rPath := req.URL.Path if fixedPath, ok := root.findCaseInsensitivePath(cleanPath(rPath), trailingSlash); ok { - code := http.StatusMovedPermanently // Permanent redirect, request with GET method - if req.Method != "GET" { - code = http.StatusTemporaryRedirect - } req.URL.Path = string(fixedPath) - redirectRequest(c, code) + redirectRequest(c) return true } return false } -func redirectRequest(c *Context, code int) { - rPath := c.Request.URL.Path - rURL := c.Request.URL.String() +func redirectRequest(c *Context) { + req := c.Request + rPath := req.URL.Path + rURL := req.URL.String() + + code := http.StatusMovedPermanently // Permanent redirect, request with GET method + if req.Method != "GET" { + code = http.StatusTemporaryRedirect + } debugPrint("redirecting request %d: %s --> %s", code, rPath, rURL) - http.Redirect(c.Writer, c.Request, rURL, code) + http.Redirect(c.Writer, req, rURL, code) c.writermem.WriteHeaderNow() }