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 b6065e9cac7..69f62407f8b 100644
--- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java
+++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java
@@ -53,48 +53,273 @@ import org.springframework.util.StringUtils;
*
Inspired by {@link com.sun.net.httpserver.Headers}.
*
* @author Arjen Poutsma
+ * @author Sebastien Deleuze
* @since 3.0
*/
public class HttpHeaders implements MultiValueMap, Serializable {
private static final long serialVersionUID = -8578554704772377436L;
+ /**
+ * The HTTP {@code Accept} header field name.
+ * @see Section 5.3.2 of RFC 7231
+ */
public static final String ACCEPT = "Accept";
-
+ /**
+ * The HTTP {@code Accept-Charset} header field name.
+ * @see Section 5.3.3 of RFC 7231
+ */
public static final String ACCEPT_CHARSET = "Accept-Charset";
-
+ /**
+ * The HTTP {@code Accept-Encoding} header field name.
+ * @see Section 5.3.4 of RFC 7231
+ */
+ public static final String ACCEPT_ENCODING = "Accept-Encoding";
+ /**
+ * The HTTP {@code Accept-Language} header field name.
+ * @see Section 5.3.5 of RFC 7231
+ */
+ public static final String ACCEPT_LANGUAGE = "Accept-Language";
+ /**
+ * The HTTP {@code Accept-Ranges} header field name.
+ * @see Section 5.3.5 of RFC 7233
+ */
+ public static final String ACCEPT_RANGES = "Accept-Ranges";
+ /**
+ * The HTTP {@code Age} header field name.
+ * @see Section 5.1 of RFC 7234
+ */
+ public static final String AGE = "Age";
+ /**
+ * The HTTP {@code Allow} header field name.
+ * @see Section 7.4.1 of RFC 7231
+ */
public static final String ALLOW = "Allow";
-
+ /**
+ * The HTTP {@code Authorization} header field name.
+ * @see Section 4.2 of RFC 7235
+ */
+ public static final String AUTHORIZATION = "Authorization";
+ /**
+ * The HTTP {@code Cache-Control} header field name.
+ * @see Section 5.2 of RFC 7234
+ */
public static final String CACHE_CONTROL = "Cache-Control";
-
+ /**
+ * The HTTP {@code Connection} header field name.
+ * @see Section 6.1 of RFC 7230
+ */
public static final String CONNECTION = "Connection";
-
+ /**
+ * The HTTP {@code Content-Encoding} header field name.
+ * @see Section 3.1.2.2 of RFC 7231
+ */
+ public static final String CONTENT_ENCODING = "Content-Encoding";
+ /**
+ * The HTTP {@code Content-Disposition} header field name
+ * @see RFC 6266
+ */
public static final String CONTENT_DISPOSITION = "Content-Disposition";
-
+ /**
+ * The HTTP {@code Content-Language} header field name.
+ * @see Section 3.1.3.2 of RFC 7231
+ */
+ public static final String CONTENT_LANGUAGE = "Content-Language";
+ /**
+ * The HTTP {@code Content-Length} header field name.
+ * @see Section 3.3.2 of RFC 7230
+ */
public static final String CONTENT_LENGTH = "Content-Length";
-
+ /**
+ * The HTTP {@code Content-Location} header field name.
+ * @see Section 3.1.4.2 of RFC 7231
+ */
+ public static final String CONTENT_LOCATION = "Content-Location";
+ /**
+ * The HTTP {@code Content-Range} header field name.
+ * @see Section 4.2 of RFC 7233
+ */
+ public static final String CONTENT_RANGE = "Content-Range";
+ /**
+ * The HTTP {@code Content-Type} header field name.
+ * @see Section 3.1.1.5 of RFC 7231
+ */
public static final String CONTENT_TYPE = "Content-Type";
-
+ /**
+ * The HTTP {@code Cookie} header field name.
+ * @see Section 4.3.4 of RFC 2109
+ */
+ public static final String COOKIE = "Cookie";
+ /**
+ * The HTTP {@code Date} header field name.
+ * @see Section 7.1.1.2 of RFC 7231
+ */
public static final String DATE = "Date";
-
+ /**
+ * The HTTP {@code ETag} header field name.
+ * @see Section 2.3 of RFC 7232
+ */
public static final String ETAG = "ETag";
-
+ /**
+ * The HTTP {@code Expect} header field name.
+ * @see Section 5.1.1 of RFC 7231
+ */
+ public static final String EXPECT = "Expect";
+ /**
+ * The HTTP {@code Expires} header field name.
+ * @see Section 5.3 of RFC 7234
+ */
public static final String EXPIRES = "Expires";
-
+ /**
+ * The HTTP {@code From} header field name.
+ * @see Section 5.5.1 of RFC 7231
+ */
+ public static final String FROM = "From";
+ /**
+ * The HTTP {@code Host} header field name.
+ * @see Section 5.4 of RFC 7230
+ */
+ public static final String HOST = "Host";
+ /**
+ * The HTTP {@code If-Match} header field name.
+ * @see Section 3.1 of RFC 7232
+ */
+ public static final String IF_MATCH = "If-Match";
+ /**
+ * The HTTP {@code If-Modified-Since} header field name.
+ * @see Section 3.3 of RFC 7232
+ */
public static final String IF_MODIFIED_SINCE = "If-Modified-Since";
-
+ /**
+ * The HTTP {@code If-None-Match} header field name.
+ * @see Section 3.2 of RFC 7232
+ */
public static final String IF_NONE_MATCH = "If-None-Match";
-
+ /**
+ * The HTTP {@code If-Range} header field name.
+ * @see Section 3.2 of RFC 7233
+ */
+ public static final String IF_RANGE = "If-Range";
+ /**
+ * The HTTP {@code If-Unmodified-Since} header field name.
+ * @see Section 3.4 of RFC 7232
+ */
+ public static final String IF_UNMODIFIED_SINCE = "If-Unmodified-Since";
+ /**
+ * The HTTP {@code Last-Modified} header field name.
+ * @see Section 2.2 of RFC 7232
+ */
public static final String LAST_MODIFIED = "Last-Modified";
-
+ /**
+ * The HTTP {@code Link} header field name.
+ * @see RFC 5988
+ */
+ public static final String LINK = "Link";
+ /**
+ * The HTTP {@code Location} header field name.
+ * @see Section 7.1.2 of RFC 7231
+ */
public static final String LOCATION = "Location";
-
+ /**
+ * The HTTP {@code Max-Forwards} header field name.
+ * @see Section 5.1.2 of RFC 7231
+ */
+ public static final String MAX_FORWARDS = "Max-Forwards";
+ /**
+ * The HTTP {@code Origin} header field name.
+ * @see RFC 6454
+ */
public static final String ORIGIN = "Origin";
-
+ /**
+ * The HTTP {@code Pragma} header field name.
+ * @see Section 5.4 of RFC 7234
+ */
public static final String PRAGMA = "Pragma";
-
+ /**
+ * The HTTP {@code Proxy-Authenticate} header field name.
+ * @see Section 4.3 of RFC 7235
+ */
+ public static final String PROXY_AUTHENTICATE = "Proxy-Authenticate";
+ /**
+ * The HTTP {@code Proxy-Authorization} header field name.
+ * @see Section 4.4 of RFC 7235
+ */
+ public static final String PROXY_AUTHORIZATION = "Proxy-Authorization";
+ /**
+ * The HTTP {@code Range} header field name.
+ * @see Section 3.1 of RFC 7233
+ */
+ public static final String RANGE = "Range";
+ /**
+ * The HTTP {@code Referer} header field name.
+ * @see Section 5.5.2 of RFC 7231
+ */
+ public static final String REFERER = "Referer";
+ /**
+ * The HTTP {@code Retry-After} header field name.
+ * @see Section 7.1.3 of RFC 7231
+ */
+ public static final String RETRY_AFTER = "Retry-After";
+ /**
+ * The HTTP {@code Server} header field name.
+ * @see Section 7.4.2 of RFC 7231
+ */
+ public static final String SERVER = "Server";
+ /**
+ * The HTTP {@code Set-Cookie} header field name.
+ * @see Section 4.2.2 of RFC 2109
+ */
+ public static final String SET_COOKIE = "Set-Cookie";
+ /**
+ * The HTTP {@code Set-Cookie2} header field name.
+ * @see RFC 2965
+ */
+ public static final String SET_COOKIE2 = "Set-Cookie2";
+ /**
+ * The HTTP {@code TE} header field name.
+ * @see Section 4.3 of RFC 7230
+ */
+ public static final String TE = "TE";
+ /**
+ * The HTTP {@code Trailer} header field name.
+ * @see Section 4.4 of RFC 7230
+ */
+ public static final String TRAILER = "Trailer";
+ /**
+ * The HTTP {@code Transfer-Encoding} header field name.
+ * @see Section 3.3.1 of RFC 7230
+ */
+ public static final String TRANSFER_ENCODING = "Transfer-Encoding";
+ /**
+ * The HTTP {@code Upgrade} header field name.
+ * @see Section 6.7 of RFC 7230
+ */
public static final String UPGRADE = "Upgrade";
-
+ /**
+ * The HTTP {@code User-Agent} header field name.
+ * @see Section 5.5.3 of RFC 7231
+ */
+ public static final String USER_AGENT = "User-Agent";
+ /**
+ * The HTTP {@code Vary} header field name.
+ * @see Section 7.1.4 of RFC 7231
+ */
+ public static final String VARY = "Vary";
+ /**
+ * The HTTP {@code Via} header field name.
+ * @see Section 5.7.1 of RFC 7230
+ */
+ public static final String VIA = "Via";
+ /**
+ * The HTTP {@code Warning} header field name.
+ * @see Section 5.5 of RFC 7234
+ */
+ public static final String WARNING = "Warning";
+ /**
+ * The HTTP {@code WWW-Authenticate} header field name.
+ * @see Section 4.1 of RFC 7235
+ */
+ public static final String WWW_AUTHENTICATE = "WWW-Authenticate";
private static final String[] DATE_FORMATS = new String[] {
"EEE, dd MMM yyyy HH:mm:ss zzz",