|
28 | 28 | import org.springframework.core.ResolvableType;
|
29 | 29 | import org.springframework.http.HttpEntity;
|
30 | 30 | import org.springframework.http.HttpHeaders;
|
| 31 | +import org.springframework.http.HttpMethod; |
31 | 32 | import org.springframework.http.RequestEntity;
|
32 | 33 | import org.springframework.http.ResponseEntity;
|
33 | 34 | import org.springframework.http.converter.HttpMessageConverter;
|
@@ -183,7 +184,7 @@ public void handleReturnValue(Object returnValue, MethodParameter returnType,
|
183 | 184 | if (responseEntity instanceof ResponseEntity) {
|
184 | 185 | int returnStatus = ((ResponseEntity<?>) responseEntity).getStatusCodeValue();
|
185 | 186 | outputMessage.getServletResponse().setStatus(returnStatus);
|
186 |
| - if(returnStatus == 200) { |
| 187 | + if (returnStatus == 200) { |
187 | 188 | if (isResourceNotModified(inputMessage, outputMessage)) {
|
188 | 189 | // Ensure headers are flushed, no body should be written.
|
189 | 190 | outputMessage.flush();
|
@@ -227,8 +228,10 @@ private boolean isResourceNotModified(ServletServerHttpRequest inputMessage, Ser
|
227 | 228 | HttpHeaders responseHeaders = outputMessage.getHeaders();
|
228 | 229 | String etag = responseHeaders.getETag();
|
229 | 230 | long lastModifiedTimestamp = responseHeaders.getLastModified();
|
230 |
| - responseHeaders.remove(HttpHeaders.ETAG); |
231 |
| - responseHeaders.remove(HttpHeaders.LAST_MODIFIED); |
| 231 | + if (inputMessage.getMethod() == HttpMethod.GET || inputMessage.getMethod() == HttpMethod.HEAD) { |
| 232 | + responseHeaders.remove(HttpHeaders.ETAG); |
| 233 | + responseHeaders.remove(HttpHeaders.LAST_MODIFIED); |
| 234 | + } |
232 | 235 |
|
233 | 236 | return servletWebRequest.checkNotModified(etag, lastModifiedTimestamp);
|
234 | 237 | }
|
|
0 commit comments