|
|
|
@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import javax.servlet.http.HttpSession; |
|
|
|
import javax.servlet.http.HttpSession; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.http.HttpMethod; |
|
|
|
import org.springframework.http.HttpMethod; |
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
@ -50,16 +51,6 @@ import org.springframework.web.util.WebUtils; |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class ServletWebRequest extends ServletRequestAttributes implements NativeWebRequest { |
|
|
|
public class ServletWebRequest extends ServletRequestAttributes implements NativeWebRequest { |
|
|
|
|
|
|
|
|
|
|
|
private static final String ETAG = "ETag"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String IF_MODIFIED_SINCE = "If-Modified-Since"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String IF_UNMODIFIED_SINCE = "If-Unmodified-Since"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String IF_NONE_MATCH = "If-None-Match"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String LAST_MODIFIED = "Last-Modified"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final List<String> SAFE_METHODS = Arrays.asList("GET", "HEAD"); |
|
|
|
private static final List<String> SAFE_METHODS = Arrays.asList("GET", "HEAD"); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -244,11 +235,11 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ |
|
|
|
HttpStatus.NOT_MODIFIED.value() : HttpStatus.PRECONDITION_FAILED.value()); |
|
|
|
HttpStatus.NOT_MODIFIED.value() : HttpStatus.PRECONDITION_FAILED.value()); |
|
|
|
} |
|
|
|
} |
|
|
|
if (isHttpGetOrHead) { |
|
|
|
if (isHttpGetOrHead) { |
|
|
|
if (lastModifiedTimestamp > 0 && parseDateValue(response.getHeader(LAST_MODIFIED)) == -1) { |
|
|
|
if (lastModifiedTimestamp > 0 && parseDateValue(response.getHeader(HttpHeaders.LAST_MODIFIED)) == -1) { |
|
|
|
response.setDateHeader(LAST_MODIFIED, lastModifiedTimestamp); |
|
|
|
response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModifiedTimestamp); |
|
|
|
} |
|
|
|
} |
|
|
|
if (StringUtils.hasLength(etag) && response.getHeader(ETAG) == null) { |
|
|
|
if (StringUtils.hasLength(etag) && response.getHeader(HttpHeaders.ETAG) == null) { |
|
|
|
response.setHeader(ETAG, padEtagIfNecessary(etag)); |
|
|
|
response.setHeader(HttpHeaders.ETAG, padEtagIfNecessary(etag)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -260,7 +251,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ |
|
|
|
if (lastModifiedTimestamp < 0) { |
|
|
|
if (lastModifiedTimestamp < 0) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
long ifUnmodifiedSince = parseDateHeader(IF_UNMODIFIED_SINCE); |
|
|
|
long ifUnmodifiedSince = parseDateHeader(HttpHeaders.IF_UNMODIFIED_SINCE); |
|
|
|
if (ifUnmodifiedSince == -1) { |
|
|
|
if (ifUnmodifiedSince == -1) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -276,7 +267,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ |
|
|
|
|
|
|
|
|
|
|
|
Enumeration<String> ifNoneMatch; |
|
|
|
Enumeration<String> ifNoneMatch; |
|
|
|
try { |
|
|
|
try { |
|
|
|
ifNoneMatch = getRequest().getHeaders(IF_NONE_MATCH); |
|
|
|
ifNoneMatch = getRequest().getHeaders(HttpHeaders.IF_NONE_MATCH); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (IllegalArgumentException ex) { |
|
|
|
catch (IllegalArgumentException ex) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
@ -319,7 +310,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ |
|
|
|
if (lastModifiedTimestamp < 0) { |
|
|
|
if (lastModifiedTimestamp < 0) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
long ifModifiedSince = parseDateHeader(IF_MODIFIED_SINCE); |
|
|
|
long ifModifiedSince = parseDateHeader(HttpHeaders.IF_MODIFIED_SINCE); |
|
|
|
if (ifModifiedSince == -1) { |
|
|
|
if (ifModifiedSince == -1) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|