spring-projects / spring-framework

Spring Framework
https://spring.io/projects/spring-framework
Apache License 2.0
56.46k stars 38.09k forks source link

Create Filter to handle URLs with trailing slashes #31366

Closed rstoyanchev closed 5 months ago

rstoyanchev commented 1 year ago

Matching URLs with a trailing slash was deprecated in 6.0 in favor of early handling via proxy or Filter like UrlRewriteFilter, see #28552 for details. The continued feedback on the issue, however, makes it clear we need to go further and provide built-in support.

This can be a Filter ordered as early as possible, e.g. ahead of security, that handles URLs with a trailing slash. One option is a permanent redirect, and another is to rewrite the request like UrlRewriteFilter. This can be configurable by URL pattern or for all requests. Another suggestion from https://github.com/spring-projects/spring-framework/issues/28552#issuecomment-1469740759 is to log URLs with a trailing slash in order to discover and phase them out.

thammaratNak1 commented 5 months ago

why does'n support trailing slash by default same as version before ?

SebasAnasco1517 commented 5 months ago

Hi, there any news for this Filter built-in solution? On my company we migrated to SpringBoot 3 and found the 404 problem from the deprecation of trailing slash.

Have a good one, God bless you.

ericdriggs commented 5 months ago

@SebasAnasco1517 Workaround is setUseTrailingSlashMatch. I'm using it in several projects

https://github.com/spring-projects/spring-framework/issues/28552#issuecomment-1746252506

rstoyanchev commented 5 months ago

I've added UrlHandlerFilter in edb6bb717d9ea10429a9e5c1fba285cd7761d5a1 that will be in 6.2.0 snapshots shortly, and in the M2 release tomorrow. Early feedback towards further 6.2 milestones would be much appreciated!

There is no WebFlux equivalent yet, but I've created #32830 for M3 to keep track of that.

kundan621 commented 1 week ago

@rstoyanchev can you please also tell how to use this? Do you have any documentation or Blog post for this?