@@ -2934,16 +2934,33 @@ cookie: e=f
29342934 pseudo-header field to convey authority information, unless there is no authority
29352935 information to convey (in which case it MUST NOT generate :authority).
29362936 </t >
2937+ <t >
2938+ Clients MUST NOT generate a request with a <tt >Host</tt > header field that differs
2939+ from the <tt >:authority</tt > pseudo-header field. A
2940+ server SHOULD treat a request as malformed if it contains a <tt >Host</tt > header
2941+ field that identifies a different entity to the <tt >:authority</tt > pseudo-header
2942+ field. The values of fields need to be normalized to compare them (see <xref
2943+ target =" RFC3986" section =" 6.2" />). An origin server can apply any normalization
2944+ method, whereas other servers MUST perform scheme-based normalization (see <xref
2945+ target =" RFC3986" section =" 6.2.3" />) of the two fields.
2946+ </t >
29372947 <t >
29382948 An intermediary that forwards a request over HTTP/2 MUST construct an
29392949 <tt >:authority</tt > pseudo-header field using the authority information from the
29402950 control data of the original request, unless the the original request's target URI
29412951 does not contain authority information (in which case it MUST NOT generate
2942- <tt >:authority</tt >). Note that the Host header field is not the sole source of this
2943- information; see <xref target =" HTTP" section =" 7.2" />.
2952+ <tt >:authority</tt >). Note that the <tt >Host</tt > header field is not the sole
2953+ source of this information; see <xref target =" HTTP" section =" 7.2" />.
2954+ </t >
2955+ <t >
2956+ An intermediary that needs to generate a <tt >Host</tt > header field (which might be
2957+ necessary to construct an HTTP/1.1 request) MUST use the value from the <tt >:authority</tt >
2958+ pseudo-header field as the value of the <tt >Host</tt > field,
2959+ unless the intermediary also changes the request target. This replaces any existing
2960+ <tt >Host</tt > field to avoid potential vulnerabilities in HTTP routing.
29442961 </t >
29452962 <t >
2946- An intermediary that forwards a request over HTTP/2 MUST retain any <tt >Host</tt >
2963+ An intermediary that forwards a request over HTTP/2 MAY retain any <tt >Host</tt >
29472964 header field.
29482965 </t >
29492966 <t >
@@ -5172,6 +5189,9 @@ cookie: e=f
51725189 Connection-specific header fields - which are prohibited - are more precisely and
51735190 comprehensively identified.
51745191 </li >
5192+ <li >
5193+ <tt >Host</tt > and <tt >:authority</tt > are no longer permitted to disagree.
5194+ </li >
51755195 </ul >
51765196 </section >
51775197 <section numbered =" false" >
0 commit comments