diff --git a/draft-ietf-httpbis-http2bis.xml b/draft-ietf-httpbis-http2bis.xml index 963401db..54ba9c9e 100644 --- a/draft-ietf-httpbis-http2bis.xml +++ b/draft-ietf-httpbis-http2bis.xml @@ -2934,16 +2934,33 @@ cookie: e=f pseudo-header field to convey authority information, unless there is no authority information to convey (in which case it MUST NOT generate :authority). + + Clients MUST NOT generate a request with a Host header field that differs + from the :authority pseudo-header field. A + server SHOULD treat a request as malformed if it contains a Host header + field that identifies a different entity to the :authority pseudo-header + field. The values of fields need to be normalized to compare them (see ). An origin server can apply any normalization + method, whereas other servers MUST perform scheme-based normalization (see ) of the two fields. + An intermediary that forwards a request over HTTP/2 MUST construct an :authority pseudo-header field using the authority information from the control data of the original request, unless the the original request's target URI does not contain authority information (in which case it MUST NOT generate - :authority). Note that the Host header field is not the sole source of this - information; see . + :authority). Note that the Host header field is not the sole + source of this information; see . + + + An intermediary that needs to generate a Host header field (which might be + necessary to construct an HTTP/1.1 request) MUST use the value from the :authority + pseudo-header field as the value of the Host field, + unless the intermediary also changes the request target. This replaces any existing + Host field to avoid potential vulnerabilities in HTTP routing. - An intermediary that forwards a request over HTTP/2 MUST retain any Host + An intermediary that forwards a request over HTTP/2 MAY retain any Host header field. @@ -5172,6 +5189,9 @@ cookie: e=f Connection-specific header fields - which are prohibited - are more precisely and comprehensively identified. +
  • + Host and :authority are no longer permitted to disagree. +