Ignore:
Timestamp:
03/07/12 09:29:18 (11 years ago)
Author:
julian.reschke@…
Message:

clarify connection header field values are case-insensitive (see #359)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p1-messaging.html

    r1705 r1706  
    19961996      </p>
    19971997      <p id="rfc.section.6.1.p.2">The Connection header field's value has the following grammar:</p>
    1998       <div id="rfc.figure.u.59"></div><pre class="inline"><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span>  <a href="#header.connection" class="smpl">Connection</a>       = 1#<a href="#header.connection" class="smpl">connection-token</a>
    1999   <a href="#header.connection" class="smpl">connection-token</a> = <a href="#rule.token.separators" class="smpl">token</a>
    2000 </pre><p id="rfc.section.6.1.p.4">A proxy or gateway <em class="bcp14">MUST</em> parse a received Connection header field before a message is forwarded and, for each connection-token in this field, remove
    2001          any header field(s) from the message with the same name as the connection-token, and then remove the Connection header field
     1998      <div id="rfc.figure.u.59"></div><pre class="inline"><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span>  <a href="#header.connection" class="smpl">Connection</a>        = 1#<a href="#header.connection" class="smpl">connection-option</a>
     1999  <a href="#header.connection" class="smpl">connection-option</a> = <a href="#rule.token.separators" class="smpl">token</a>
     2000</pre><p id="rfc.section.6.1.p.4">Connection options are compared case-insensitively.</p>
     2001      <p id="rfc.section.6.1.p.5">A proxy or gateway <em class="bcp14">MUST</em> parse a received Connection header field before a message is forwarded and, for each connection-option in this field, remove
     2002         any header field(s) from the message with the same name as the connection-option, and then remove the Connection header field
    20022003         itself or replace it with the sender's own connection options for the forwarded message.
    20032004      </p>
    2004       <p id="rfc.section.6.1.p.5">A sender <em class="bcp14">MUST NOT</em> include field-names in the Connection header field-value for fields that are defined as expressing constraints for all recipients
     2005      <p id="rfc.section.6.1.p.6">A sender <em class="bcp14">MUST NOT</em> include field-names in the Connection header field-value for fields that are defined as expressing constraints for all recipients
    20052006         in the request or response chain, such as the Cache-Control header field (<a href="p6-cache.html#header.cache-control" title="Cache-Control">Section 3.2</a> of <a href="#Part6" id="rfc.xref.Part6.7"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
    20062007      </p>
    2007       <p id="rfc.section.6.1.p.6">The connection options do not have to correspond to a header field present in the message, since a connection-specific header
     2008      <p id="rfc.section.6.1.p.7">The connection options do not have to correspond to a header field present in the message, since a connection-specific header
    20082009         field might not be needed if there are no parameters associated with that connection option. Recipients that trigger certain
    2009          connection behavior based on the presence of connection options <em class="bcp14">MUST</em> do so based on the presence of the connection-token rather than only the presence of the optional header field. In other words,
    2010          if the connection option is received as a header field but not indicated within the Connection field-value, then the recipient <em class="bcp14">MUST</em> ignore the connection-specific header field because it has likely been forwarded by an intermediary that is only partially
     2010         connection behavior based on the presence of connection options <em class="bcp14">MUST</em> do so based on the presence of the connection-option rather than only the presence of the optional header field. In other
     2011         words, if the connection option is received as a header field but not indicated within the Connection field-value, then the
     2012         recipient <em class="bcp14">MUST</em> ignore the connection-specific header field because it has likely been forwarded by an intermediary that is only partially
    20112013         conformant.
    20122014      </p>
    2013       <p id="rfc.section.6.1.p.7">When defining new connection options, specifications ought to carefully consider existing deployed header fields and ensure
    2014          that the new connection-token does not share the same name as an unrelated header field that might already be deployed. Defining
    2015          a new connection-token essentially reserves that potential field-name for carrying additional information related to the connection
    2016          option, since it would be unwise for senders to use that field-name for anything else.
    2017       </p>
    2018       <p id="rfc.section.6.1.p.8">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
     2015      <p id="rfc.section.6.1.p.8">When defining new connection options, specifications ought to carefully consider existing deployed header fields and ensure
     2016         that the new connection option does not share the same name as an unrelated header field that might already be deployed. Defining
     2017         a new connection option essentially reserves that potential field-name for carrying additional information related to the
     2018         connection option, since it would be unwise for senders to use that field-name for anything else.
     2019      </p>
     2020      <p id="rfc.section.6.1.p.9">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
    20192021         of the response. For example,
    20202022      </p>
    20212023      <div id="rfc.figure.u.60"></div><pre class="text">  Connection: close
    2022 </pre><p id="rfc.section.6.1.p.10">in either the request or the response header fields indicates that the connection <em class="bcp14">SHOULD NOT</em> be considered "persistent" (<a href="#persistent.connections" title="Persistent Connections">Section&nbsp;6.3</a>) after the current request/response is complete.
    2023       </p>
    2024       <p id="rfc.section.6.1.p.11">An HTTP/1.1 client that does not support persistent connections <em class="bcp14">MUST</em> include the "close" connection option in every request message.
    2025       </p>
    2026       <p id="rfc.section.6.1.p.12">An HTTP/1.1 server that does not support persistent connections <em class="bcp14">MUST</em> include the "close" connection option in every response message that does not have a 1xx (Informational) status code.
     2024</pre><p id="rfc.section.6.1.p.11">in either the request or the response header fields indicates that the connection <em class="bcp14">SHOULD NOT</em> be considered "persistent" (<a href="#persistent.connections" title="Persistent Connections">Section&nbsp;6.3</a>) after the current request/response is complete.
     2025      </p>
     2026      <p id="rfc.section.6.1.p.12">An HTTP/1.1 client that does not support persistent connections <em class="bcp14">MUST</em> include the "close" connection option in every request message.
     2027      </p>
     2028      <p id="rfc.section.6.1.p.13">An HTTP/1.1 server that does not support persistent connections <em class="bcp14">MUST</em> include the "close" connection option in every response message that does not have a 1xx (Informational) status code.
    20272029      </p>
    20282030      <div id="rfc.iref.v.1"></div>
     
    30083010      <div id="rfc.figure.u.67"></div> <pre class="inline"><a href="#rule.whitespace" class="smpl">BWS</a> = OWS
    30093011
    3010 <a href="#header.connection" class="smpl">Connection</a> = *( "," OWS ) connection-token *( OWS "," [ OWS
    3011  connection-token ] )
     3012<a href="#header.connection" class="smpl">Connection</a> = *( "," OWS ) connection-option *( OWS "," [ OWS
     3013 connection-option ] )
    30123014<a href="#header.content-length" class="smpl">Content-Length</a> = 1*DIGIT
    30133015
     
    30493051<a href="#chunked.encoding" class="smpl">chunked-body</a> = *chunk last-chunk trailer-part CRLF
    30503052<a href="#rule.comment" class="smpl">comment</a> = "(" *( ctext / quoted-cpair / comment ) ")"
    3051 <a href="#header.connection" class="smpl">connection-token</a> = token
     3053<a href="#header.connection" class="smpl">connection-option</a> = token
    30523054<a href="#rule.comment" class="smpl">ctext</a> = OWS / %x21-27 ; '!'-'''
    30533055 / %x2A-5B ; '*'-'['
     
    35313533      <ul>
    35323534         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/346">http://tools.ietf.org/wg/httpbis/trac/ticket/346</a>&gt;: "make IANA policy definitions consistent"
     3535         </li>
     3536         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/359">http://tools.ietf.org/wg/httpbis/trac/ticket/359</a>&gt;: "clarify connection header field values are case-insensitive"
    35333537         </li>
    35343538         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/361">http://tools.ietf.org/wg/httpbis/trac/ticket/361</a>&gt;: "ABNF requirements for recipients"
     
    36023606                        <li><tt>comment</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.48"><b>3.2.4</b></a></li>
    36033607                        <li><tt>Connection</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.85"><b>6.1</b></a></li>
    3604                         <li><tt>connection-token</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.86"><b>6.1</b></a></li>
     3608                        <li><tt>connection-option</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.86"><b>6.1</b></a></li>
    36053609                        <li><tt>Content-Length</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.53"><b>3.3.2</b></a></li>
    36063610                        <li>CR&nbsp;&nbsp;<a href="#rfc.iref.g.2"><b>1.2</b></a></li>
Note: See TracChangeset for help on using the changeset viewer.