diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java index 30a2d6755b6c..b04b1c27dd5f 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -399,7 +399,7 @@ private CachedResult(HttpServletRequest request, public boolean matches(HttpServletRequest request) { return (this.dispatcherType.equals(request.getDispatcherType()) && - this.requestURI.matches(request.getRequestURI())); + this.requestURI.equals(request.getRequestURI())); } @Nullable diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/handler/HandlerMappingIntrospectorTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/handler/HandlerMappingIntrospectorTests.java index 8037a5cad579..4d8a25384798 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/handler/HandlerMappingIntrospectorTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/handler/HandlerMappingIntrospectorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -204,15 +204,16 @@ void getCorsConfigurationActual() { assertThat(corsConfig.getAllowedMethods()).isEqualTo(Collections.singletonList("POST")); } - @Test - void cacheFilter() throws Exception { + @ParameterizedTest + @ValueSource(strings = {"/test", "/resource/1234****"}) // gh-31937 + void cacheFilter(String uri) throws Exception { CorsConfiguration corsConfig = new CorsConfiguration(); TestMatchableHandlerMapping mapping = new TestMatchableHandlerMapping(); - mapping.registerHandler("/test", new TestHandler(corsConfig)); + mapping.registerHandler("/*", new TestHandler(corsConfig)); HandlerMappingIntrospector introspector = initIntrospector(mapping); - MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test"); + MockHttpServletRequest request = new MockHttpServletRequest("GET", uri); MockHttpServletResponse response = new MockHttpServletResponse(); MockFilterChain filterChain = new MockFilterChain(