Merge 9395c62314336e78849da7d3c25a7207be568899 into d75fcd4c9ab260e5225de590f1f0f8c0e0e12d11

This commit is contained in:
Puneet Dixit 2026-06-02 23:22:49 +08:00 committed by GitHub
commit 832bb009b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 0 deletions

1
gin.go
View File

@ -811,6 +811,7 @@ func redirectFixedPath(c *Context, root *node, trailingSlash bool) bool {
if fixedPath, ok := root.findCaseInsensitivePath(cleanPath(rPath), trailingSlash); ok {
req.URL.Path = bytesconv.BytesToString(fixedPath)
req.URL.RawPath = ""
redirectRequest(c)
return true
}

View File

@ -273,6 +273,24 @@ func TestRouteRedirectFixedPath(t *testing.T) {
assert.Equal(t, http.StatusTemporaryRedirect, w.Code)
}
func TestRouteRedirectFixedPathWithRawPath(t *testing.T) {
router := New()
router.RedirectFixedPath = true
router.RedirectTrailingSlash = false
router.UseRawPath = true
router.UnescapePathValues = false
router.GET("/あ", func(c *Context) {})
w := PerformRequest(router, http.MethodGet, "/%e3%81%82")
assert.Equal(t, "/%E3%81%82", w.Header().Get("Location"))
assert.Equal(t, http.StatusMovedPermanently, w.Code)
w = PerformRequest(router, http.MethodGet, "/%E3%81%82")
assert.Empty(t, w.Header().Get("Location"))
assert.Equal(t, http.StatusOK, w.Code)
}
// TestContextParamsGet tests that a parameter can be parsed from the URL.
func TestRouteParamsByName(t *testing.T) {
name := ""