forked from forgejo/forgejo
Instead of using routerCtx just escape the url before routing (#18086)
A consequence of forcibly setting the RoutePath to the escaped url is that the auto routing to endpoints without terminal slashes fails (Causing #18060.) This failure raises the possibility that forcibly setting the RoutePath causes other unexpected behaviors too. Therefore, instead we should simply pre-escape the URL in the process registering handler. Then the request URL will be properly escaped for all the following calls. Fix #17938 Fix #18060 Replace #18062 Replace #17997 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
parent
26070eb818
commit
16adaaeaa3
4 changed files with 4 additions and 18 deletions
|
@ -1079,11 +1079,6 @@ func RegisterRoutes(m *web.Route) {
|
|||
m.Get("/swagger.v1.json", SwaggerV1Json)
|
||||
}
|
||||
m.NotFound(func(w http.ResponseWriter, req *http.Request) {
|
||||
escapedPath := req.URL.EscapedPath()
|
||||
if len(escapedPath) > 1 && escapedPath[len(escapedPath)-1] == '/' {
|
||||
http.Redirect(w, req, setting.AppSubURL+escapedPath[:len(escapedPath)-1], http.StatusTemporaryRedirect)
|
||||
return
|
||||
}
|
||||
ctx := context.GetContext(req)
|
||||
ctx.NotFound("", nil)
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue