diff --git a/spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java b/spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java index 79bca0ca7aa..5d29d1c59be 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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. @@ -19,6 +19,7 @@ package org.springframework.web.filter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; + import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; @@ -168,8 +169,8 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter { int responseStatusCode, InputStream inputStream) { String method = request.getMethod(); - if (responseStatusCode >= 200 && responseStatusCode < 300 && - (HttpMethod.GET.matches(method) || HttpMethod.HEAD.matches(method))) { + if (responseStatusCode >= 200 && responseStatusCode < 300 + && HttpMethod.GET.matches(method)) { String cacheControl = response.getHeader(HEADER_CACHE_CONTROL); if (cacheControl == null || !cacheControl.contains(DIRECTIVE_NO_STORE)) { diff --git a/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java b/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java index 893501b23ee..d5961ce112c 100644 --- a/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java +++ b/spring-web/src/test/java/org/springframework/web/filter/ShallowEtagHeaderFilterTests.java @@ -46,6 +46,9 @@ public class ShallowEtagHeaderFilterTests { assertTrue(filter.isEligibleForEtag(request, response, 200, StreamUtils.emptyInput())); assertFalse(filter.isEligibleForEtag(request, response, 300, StreamUtils.emptyInput())); + request = new MockHttpServletRequest("HEAD", "/hotels"); + assertFalse(filter.isEligibleForEtag(request, response, 200, StreamUtils.emptyInput())); + request = new MockHttpServletRequest("POST", "/hotels"); assertFalse(filter.isEligibleForEtag(request, response, 200, StreamUtils.emptyInput()));