diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/WebContentGenerator.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/WebContentGenerator.java index 1c0a7081763..038accde199 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/WebContentGenerator.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/WebContentGenerator.java @@ -394,6 +394,9 @@ public abstract class WebContentGenerator extends WebApplicationObjectSupport { String ccValue = cacheControl.getHeaderValue(); if (ccValue != null) { response.setHeader(HEADER_CACHE_CONTROL, ccValue); + if (response.containsHeader(HEADER_PRAGMA)) { + response.setHeader(HEADER_PRAGMA, ""); + } } } } @@ -430,6 +433,9 @@ public abstract class WebContentGenerator extends WebApplicationObjectSupport { } response.setHeader(HEADER_CACHE_CONTROL, headerValue); } + if (response.containsHeader(HEADER_PRAGMA)) { + response.setHeader(HEADER_PRAGMA, ""); + } } /** diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/WebContentInterceptorTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/WebContentInterceptorTests.java index 19340357ec1..047167e8c65 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/WebContentInterceptorTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/WebContentInterceptorTests.java @@ -105,6 +105,34 @@ public class WebContentInterceptorTests { assertThat(cacheControlHeaders, Matchers.emptyIterable()); } + // SPR-13252 + @Test + public void cachingConfigAndPragmaHeader() throws Exception { + WebContentInterceptor interceptor = new WebContentInterceptor(); + interceptor.setCacheSeconds(10); + response.setHeader("Pragma", "no-cache"); + + interceptor.preHandle(request, response, null); + + Iterable pragmaHeaders = response.getHeaders("Pragma"); + assertThat(pragmaHeaders, Matchers.contains("")); + } + + // SPR-13252 + @SuppressWarnings("deprecation") + @Test + public void http10CachingConfigAndPragmaHeader() throws Exception { + WebContentInterceptor interceptor = new WebContentInterceptor(); + interceptor.setCacheSeconds(10); + interceptor.setAlwaysMustRevalidate(true); + response.setHeader("Pragma", "no-cache"); + + interceptor.preHandle(request, response, null); + + Iterable pragmaHeaders = response.getHeaders("Pragma"); + assertThat(pragmaHeaders, Matchers.contains("")); + } + @SuppressWarnings("deprecation") @Test public void http10CachingConfigAndSpecificMapping() throws Exception {