Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Combined class and method @RequestMapping without patterns should match root path as both "" and "/"  #29625

@rstoyanchev

Description

@rstoyanchev

Trailing slash matching was deprecated for 6.0 and the default changed to false. The motivation, as discussed in #28552, is to make mappings transparent by eliminating extras such as this, as well as others deprecated previously such as suffix patterns, path segment trimming, path decoding, and others that create a potential for vulnerabilities.

While the recommendation remains to configure redirects where trailing slashes need to be supported instead of relying on such an application-wide request mapping feature, an @RequestMapping without patterns is arguably one place where an exception can be made, and could be seen less as a trailing slash match and more as the root URL. For example:

@RestController
public class HomeController {

    @GetMapping
    public String home() {
        return "Hello, World!";
    }

}

The above should match to both http://localhost:8080 and to http://localhost:8080/. In both cases the requestURI is /, which means that the above would otherwise never match. There are other cases where the lookup path may be "", e.g. where there is a contextPath and/or servletPath, but arguably in all of these cases it's unlikely to have any ambiguity with URL security, which should be securing the root URL of the application consistently.

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions