@@ -185,16 +185,28 @@ func TestRouteRedirectTrailingSlash(t *testing.T) {
185185 w = PerformRequest (router , http .MethodGet , "/path2/" , header {Key : "X-Forwarded-Prefix" , Value : "/api/" })
186186 assert .Equal (t , 200 , w .Code )
187187
188- w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "../../bug#?" })
189- assert .Equal (t , "../../../bug%2523%253F/path" , w .Header ().Get ("Location" ))
188+ w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "../../api#?" })
189+ assert .Equal (t , "/api/path" , w .Header ().Get ("Location" ))
190+ assert .Equal (t , 301 , w .Code )
191+
192+ w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "../../../../api" })
193+ assert .Equal (t , "/api/path" , w .Header ().Get ("Location" ))
194+ assert .Equal (t , 301 , w .Code )
195+
196+ w = PerformRequest (router , http .MethodGet , "/path2" , header {Key : "X-Forwarded-Prefix" , Value : "../../../../api" })
197+ assert .Equal (t , "/api/path2/" , w .Header ().Get ("Location" ))
190198 assert .Equal (t , 301 , w .Code )
191199
192200 w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "https://gin-gonic.com/#" })
193- assert .Equal (t , "https%3A/gin-gonic.com/%23/https%253A/gin-gonic.com/%2523/path" , w .Header ().Get ("Location" ))
201+ assert .Equal (t , "https/gin-goniccom/https/gin-goniccom/path" , w .Header ().Get ("Location" ))
202+ assert .Equal (t , 301 , w .Code )
203+
204+ w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "#api" })
205+ assert .Equal (t , "api/api/path" , w .Header ().Get ("Location" ))
194206 assert .Equal (t , 301 , w .Code )
195207
196- w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "#bug " })
197- assert .Equal (t , "%23bug/%2523bug /path" , w .Header ().Get ("Location" ))
208+ w = PerformRequest (router , http .MethodGet , "/path/" , header {Key : "X-Forwarded-Prefix" , Value : "/nor-mal/#?a=1 " })
209+ assert .Equal (t , "/nor-mal/a1 /path" , w .Header ().Get ("Location" ))
198210 assert .Equal (t , 301 , w .Code )
199211
200212 router .RedirectTrailingSlash = false
0 commit comments