Home > Mobile >  Suspicious URL pattern in FilterRegistrationBean?
Suspicious URL pattern in FilterRegistrationBean?

Time:07-14

Recently I'm getting the following warning when starting my spring-boot application:

o.a.c.c.StandardContext: Suspicious URL pattern: [/rest/**] in context [], see sections 12.1 and 12.2 of the Servlet specification

Definition:

@Bean
public FilterRegistrationBean traceFilterRegistration(HttpTraceFilter filter) {
    FilterRegistrationBean registration = new FilterRegistrationBean(filter);
    registration.addUrlPatterns("/rest/**");
    return registration;
}

Question: is nowadays /rest/* the same as /rest/** so I could switch that safely? My goal is obviously to catch any sub path under the rest path, eg also /rest/this/is/my/sub.

CodePudding user response:

The specs for Servlet 3.1 and 4.0 state the following:

12.2 Specification of Mappings

In the Web application deployment descriptor, the following syntax is used to define
mappings:
■ A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for
path mapping.
■ A string beginning with a ‘*.’ prefix is used as an extension mapping.
■ The empty string ("") is a special URL pattern that exactly maps to the
application's context root, i.e., requests of the form http://host:port/<contextroot>/. In this case the path info is ’/’ and the servlet path and context path is
empty string (““).
■ A string containing only the ’/’ character indicates the "default" servlet of the
application. In this case the servlet path is the request URI minus the context path
and the path info is null.
■ All other strings are used for exact matches only.
If the effective web.xml (after merging information from fragments and
annotations) contains any

Which means the pattern /rest/** is an invalid one and should be changed to /rest/*.

  • Related