diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index 53d0a5fba820..224d77821029 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -972,7 +972,7 @@ public List getVary() { */ public long getFirstDate(String headerName) { String headerValue = getFirst(headerName); - if (headerValue == null) { + if (headerValue == null || headerValue.equals("0")) { return -1; } for (String dateFormat : DATE_FORMATS) { diff --git a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java index d88038b904ef..5d8b955a75b7 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java @@ -234,6 +234,13 @@ public void ifModifiedSince() { headers.getFirst("if-modified-since")); } + // SPR-14144 + @Test + public void ifModifiedSinceHeaderIsZero() { + headers.set(HttpHeaders.IF_MODIFIED_SINCE, "0"); + assertEquals(-1, headers.getFirstDate(HttpHeaders.IF_MODIFIED_SINCE)); + } + @Test public void pragma() { String pragma = "no-cache";