Changeset 2726 for draft-ietf-httpbis/16


Ignore:
Timestamp:
14/06/14 11:20:37 (7 years ago)
Author:
julian.reschke@…
Message:

update to latest version of rfc2629.xslt, regen all HTML

Location:
draft-ietf-httpbis/16
Files:
7 edited

Legend:

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

    r1401 r2726  
    22  PUBLIC "-//W3C//DTD HTML 4.01//EN">
    33<html lang="en">
    4    <head profile="http://www.w3.org/2006/03/hcard http://dublincore.org/documents/2008/08/04/dc-html/">
     4   <head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
    55      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    66      <title>HTTP/1.1, part 1: URIs, Connections, and Message Parsing</title><style type="text/css" title="Xml2Rfc (sans serif)">
     
    2424body {
    2525  color: black;
    26   font-family: verdana, helvetica, arial, sans-serif;
    27   font-size: 10pt;
     26  font-family: cambria, helvetica, arial, sans-serif;
     27  font-size: 11pt;
     28  margin-right: 2em;
    2829}
    2930cite {
     
    3334  margin-left: 2em;
    3435}
    35 dd {
    36   margin-right: 2em;
    37 }
    3836dl {
    3937  margin-left: 2em;
    4038}
    41 
    4239ul.empty {
    4340  list-style-type: none;
     
    5350}
    5451h1 {
    55   font-size: 14pt;
     52  font-size: 130%;
    5653  line-height: 21pt;
    5754  page-break-after: avoid;
     
    6057  page-break-before: always;
    6158}
    62 h1 a {
    63   color: #333333;
    64 }
    6559h2 {
    66   font-size: 12pt;
     60  font-size: 120%;
    6761  line-height: 15pt;
    6862  page-break-after: avoid;
    6963}
    70 h3, h4, h5, h6 {
    71   font-size: 10pt;
     64h3 {
     65  font-size: 110%;
    7266  page-break-after: avoid;
    7367}
    74 h2 a, h3 a, h4 a, h5 a, h6 a {
     68h4, h5, h6 {
     69  page-break-after: avoid;
     70}
     71h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
    7572  color: black;
    7673}
     
    8077li {
    8178  margin-left: 2em;
    82   margin-right: 2em;
    8379}
    8480ol {
    8581  margin-left: 2em;
    86   margin-right: 2em;
    8782}
    8883ol.la {
     
    9792p {
    9893  margin-left: 2em;
    99   margin-right: 2em;
    10094}
    10195pre {
     
    10397  background-color: lightyellow;
    10498  padding: .25em;
     99  page-break-inside: avoid;
    105100}
    106101pre.text2 {
     
    131126table.tt {
    132127  vertical-align: top;
     128  border-color: gray;
     129}
     130table.tt th {
     131  border-color: gray;
     132}
     133table.tt td {
     134  border-color: gray;
     135}
     136table.all {
     137  border-style: solid;
     138  border-width: 2px;
    133139}
    134140table.full {
    135   border-style: outset;
    136   border-width: 1px;
    137 }
    138 table.headers {
    139   border-style: outset;
    140   border-width: 1px;
     141  border-style: solid;
     142  border-width: 2px;
    141143}
    142144table.tt td {
    143145  vertical-align: top;
    144146}
     147table.all td {
     148  border-style: solid;
     149  border-width: 1px;
     150}
    145151table.full td {
    146   border-style: inset;
     152  border-style: none solid;
    147153  border-width: 1px;
    148154}
     
    150156  vertical-align: top;
    151157}
     158table.all th {
     159  border-style: solid;
     160  border-width: 1px;
     161}
    152162table.full th {
    153   border-style: inset;
    154   border-width: 1px;
     163  border-style: solid;
     164  border-width: 1px 1px 2px 1px;
    155165}
    156166table.headers th {
    157   border-style: none none inset none;
    158   border-width: 1px;
     167  border-style: none none solid none;
     168  border-width: 2px;
    159169}
    160170table.left {
     
    171181  caption-side: bottom;
    172182  font-weight: bold;
    173   font-size: 9pt;
     183  font-size: 10pt;
    174184  margin-top: .5em;
    175185}
     
    178188  border-spacing: 1px;
    179189  width: 95%;
    180   font-size: 10pt;
     190  font-size: 11pt;
    181191  color: white;
    182192}
     
    186196td.topnowrap {
    187197  vertical-align: top;
    188   white-space: nowrap; 
     198  white-space: nowrap;
    189199}
    190200table.header td {
     
    206216  list-style: none;
    207217  margin-left: 1.5em;
    208   margin-right: 0em;
    209218  padding-left: 0em;
    210219}
     
    212221  line-height: 150%;
    213222  font-weight: bold;
    214   font-size: 10pt;
    215223  margin-left: 0em;
    216   margin-right: 0em;
    217224}
    218225ul.toc li li {
    219226  line-height: normal;
    220227  font-weight: normal;
    221   font-size: 9pt;
     228  font-size: 10pt;
    222229  margin-left: 0em;
    223   margin-right: 0em;
    224230}
    225231li.excluded {
     
    228234ul p {
    229235  margin-left: 0em;
     236}
     237.title, .filename, h1, h2, h3, h4 {
     238  font-family: candara, helvetica, arial, sans-serif;
     239}
     240samp, tt, code, pre {
     241  font: consolas, monospace;
    230242}
    231243ul.ind, ul.ind ul {
    232244  list-style: none;
    233245  margin-left: 1.5em;
    234   margin-right: 0em;
    235246  padding-left: 0em;
    236247  page-break-before: avoid;
     
    240251  line-height: 200%;
    241252  margin-left: 0em;
    242   margin-right: 0em;
    243253}
    244254ul.ind li li {
     
    246256  line-height: 150%;
    247257  margin-left: 0em;
    248   margin-right: 0em;
    249258}
    250259.avoidbreak {
     
    270279  font-weight: bold;
    271280  text-align: center;
    272   font-size: 9pt;
     281  font-size: 10pt;
    273282}
    274283.filename {
    275284  color: #333333;
     285  font-size: 75%;
    276286  font-weight: bold;
    277   font-size: 12pt;
    278287  line-height: 21pt;
    279288  text-align: center;
     
    282291  font-weight: bold;
    283292}
    284 .hidden {
    285   display: none;
    286 }
    287293.left {
    288294  text-align: left;
     
    292298}
    293299.title {
    294   color: #990000;
    295   font-size: 18pt;
     300  color: green;
     301  font-size: 150%;
    296302  line-height: 18pt;
    297303  font-weight: bold;
     
    299305  margin-top: 36pt;
    300306}
    301 .vcardline {
    302   display: block;
    303 }
    304307.warning {
    305   font-size: 14pt;
     308  font-size: 130%;
    306309  background-color: yellow;
    307310}
     
    312315    display: none;
    313316  }
    314  
     317
    315318  a {
    316319    color: black;
     
    327330    background-color: white;
    328331    vertical-align: top;
    329     font-size: 12pt;
     332    font-size: 110%;
    330333  }
    331334
    332   ul.toc a::after {
     335  ul.toc a:nth-child(2)::after {
    333336    content: leader('.') target-counter(attr(href), page);
    334337  }
    335  
     338
    336339  ul.ind li li a {
    337340    content: target-counter(attr(href), page);
    338341  }
    339  
     342
    340343  .print2col {
    341344    column-count: 2;
     
    347350@page {
    348351  @top-left {
    349        content: "Internet-Draft"; 
    350   } 
     352       content: "Internet-Draft";
     353  }
    351354  @top-right {
    352        content: "August 2011"; 
    353   } 
     355       content: "August 2011";
     356  }
    354357  @top-center {
    355        content: "HTTP/1.1, Part 1"; 
    356   } 
     358       content: "HTTP/1.1, Part 1";
     359  }
    357360  @bottom-left {
    358        content: "Fielding, et al."; 
    359   } 
     361       content: "Fielding, et al.";
     362  }
    360363  @bottom-center {
    361        content: "Expires February 25, 2012"; 
    362   } 
     364       content: "Expires February 25, 2012";
     365  }
    363366  @bottom-right {
    364        content: "[Page " counter(page) "]"; 
    365   } 
    366 }
    367 
    368 @page:first { 
     367       content: "[Page " counter(page) "]";
     368  }
     369}
     370
     371@page:first {
    369372    @top-left {
    370373      content: normal;
     
    397400      <link rel="Appendix" title="B Collected ABNF" href="#rfc.section.B">
    398401      <link rel="Appendix" title="C Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.C">
    399       <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.553, 2011-07-27 17:45:31, XSLT vendor: SAXON 8.9 from Saxonica http://www.saxonica.com/">
     402      <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.640, 2014/06/13 12:42:58, XSLT vendor: SAXON 8.9 from Saxonica http://www.saxonica.com/">
    400403      <link rel="schema.dct" href="http://purl.org/dc/terms/">
    401404      <meta name="dct.creator" content="Fielding, R.">
     
    427430            </tr>
    428431            <tr>
    429                <td class="left">Obsoletes: <a href="http://tools.ietf.org/html/rfc2145">2145</a>, <a href="http://tools.ietf.org/html/rfc2616">2616</a> (if approved)
     432               <td class="left">Obsoletes: <a href="https://tools.ietf.org/html/rfc2145">2145</a>, <a href="https://tools.ietf.org/html/rfc2616">2616</a> (if approved)
    430433               </td>
    431434               <td class="right">J. Gettys</td>
    432435            </tr>
    433436            <tr>
    434                <td class="left">Updates: <a href="http://tools.ietf.org/html/rfc2817">2817</a> (if approved)
     437               <td class="left">Updates: <a href="https://tools.ietf.org/html/rfc2817">2817</a> (if approved)
    435438               </td>
    436439               <td class="right">Alcatel-Lucent</td>
     
    499502      </table>
    500503      <p class="title">HTTP/1.1, part 1: URIs, Connections, and Message Parsing<br><span class="filename">draft-ietf-httpbis-p1-messaging-16</span></p>
    501       <h1 id="rfc.abstract"><a href="#rfc.abstract">Abstract</a></h1> 
     504      <h1 id="rfc.abstract"><a href="#rfc.abstract">Abstract</a></h1>
    502505      <p>The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information
    503506         systems. HTTP has been in use by the World Wide Web global information initiative since 1990. This document is Part 1 of the
    504507         seven-part specification that defines the protocol referred to as "HTTP/1.1" and, taken together, obsoletes <cite title="Hypertext Transfer Protocol -- HTTP/1.1" id="rfc.xref.RFC2616.1">RFC 2616</cite> and moves it to historic status, along with its predecessor <cite title="Hypertext Transfer Protocol -- HTTP/1.1" id="rfc.xref.RFC2068.1">RFC 2068</cite>.
    505       </p> 
     508      </p>
    506509      <p>Part 1 provides an overview of HTTP and its associated terminology, defines the "http" and "https" Uniform Resource Identifier
    507510         (URI) schemes, defines the generic message syntax and parsing requirements for HTTP message frames, and describes general
    508511         security concerns for implementations.
    509       </p> 
     512      </p>
    510513      <p>This part also obsoletes RFCs <cite title="Use and Interpretation of HTTP Version Numbers" id="rfc.xref.RFC2145.1">2145</cite> (on HTTP version numbers) and <cite title="Upgrading to TLS Within HTTP/1.1" id="rfc.xref.RFC2817.1">2817</cite> (on using CONNECT for TLS upgrades) and moves them to historic status.
    511       </p> 
    512       <h1 id="rfc.note.1"><a href="#rfc.note.1">Editorial Note (To be removed by RFC Editor)</a></h1> 
     514      </p>
     515      <h1 id="rfc.note.1"><a href="#rfc.note.1">Editorial Note (To be removed by RFC Editor)</a></h1>
    513516      <p>Discussion of this draft should take place on the HTTPBIS working group mailing list (ietf-http-wg@w3.org), which is archived
    514517         at &lt;<a href="http://lists.w3.org/Archives/Public/ietf-http-wg/">http://lists.w3.org/Archives/Public/ietf-http-wg/</a>&gt;.
    515       </p> 
     518      </p>
    516519      <p>The current issues list is at &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/report/3">http://tools.ietf.org/wg/httpbis/trac/report/3</a>&gt; and related documents (including fancy diffs) can be found at &lt;<a href="http://tools.ietf.org/wg/httpbis/">http://tools.ietf.org/wg/httpbis/</a>&gt;.
    517       </p> 
     520      </p>
    518521      <p>The changes in this draft are summarized in <a href="#changes.since.15" title="Since draft-ietf-httpbis-p1-messaging-15">Appendix&nbsp;C.17</a>.
    519       </p>
    520       <h1><a id="rfc.status" href="#rfc.status">Status of This Memo</a></h1>
    521       <p>This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.</p>
    522       <p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute
    523          working documents as Internet-Drafts. The list of current Internet-Drafts is at <a href="http://datatracker.ietf.org/drafts/current/">http://datatracker.ietf.org/drafts/current/</a>.
    524522      </p>
    525       <p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other
    526          documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work
    527          in progress”.
    528       </p>
    529       <p>This Internet-Draft will expire on February 25, 2012.</p>
    530       <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1>
    531       <p>Copyright © 2011 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
    532       <p>This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights
    533          and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License
    534          text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified
    535          BSD License.
    536       </p>
    537       <p>This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November
    538          10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to
    539          allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s)
    540          controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative
    541          works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate
    542          it into languages other than English.
    543       </p>
     523      <div id="rfc.status">
     524         <h1><a href="#rfc.status">Status of This Memo</a></h1>
     525         <p>This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.</p>
     526         <p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute
     527            working documents as Internet-Drafts. The list of current Internet-Drafts is at <a href="http://datatracker.ietf.org/drafts/current/">http://datatracker.ietf.org/drafts/current/</a>.
     528         </p>
     529         <p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other
     530            documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work
     531            in progress”.
     532         </p>
     533         <p>This Internet-Draft will expire on February 25, 2012.</p>
     534      </div>
     535      <div id="rfc.copyrightnotice">
     536         <h1><a href="#rfc.copyrightnotice">Copyright Notice</a></h1>
     537         <p>Copyright © 2011 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
     538         <p>This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights
     539            and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License
     540            text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified
     541            BSD License.
     542         </p>
     543         <p>This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November
     544            10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to
     545            allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s)
     546            controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative
     547            works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate
     548            it into languages other than English.
     549         </p>
     550      </div>
    544551      <hr class="noprint">
    545552      <h1 class="np" id="rfc.toc"><a href="#rfc.toc">Table of Contents</a></h1>
    546553      <ul class="toc">
    547          <li>1.&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a><ul>
    548                <li>1.1&nbsp;&nbsp;&nbsp;<a href="#intro.requirements">Requirements</a></li>
    549                <li>1.2&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a><ul>
    550                      <li>1.2.1&nbsp;&nbsp;&nbsp;<a href="#notation.abnf">ABNF Extension: #rule</a></li>
    551                      <li>1.2.2&nbsp;&nbsp;&nbsp;<a href="#basic.rules">Basic Rules</a></li>
     554         <li><a href="#rfc.section.1">1.</a>&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a><ul>
     555               <li><a href="#rfc.section.1.1">1.1</a>&nbsp;&nbsp;&nbsp;<a href="#intro.requirements">Requirements</a></li>
     556               <li><a href="#rfc.section.1.2">1.2</a>&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a><ul>
     557                     <li><a href="#rfc.section.1.2.1">1.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#notation.abnf">ABNF Extension: #rule</a></li>
     558                     <li><a href="#rfc.section.1.2.2">1.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#basic.rules">Basic Rules</a></li>
    552559                  </ul>
    553560               </li>
    554561            </ul>
    555562         </li>
    556          <li>2.&nbsp;&nbsp;&nbsp;<a href="#architecture">HTTP-related architecture</a><ul>
    557                <li>2.1&nbsp;&nbsp;&nbsp;<a href="#operation">Client/Server Messaging</a></li>
    558                <li>2.2&nbsp;&nbsp;&nbsp;<a href="#message-orientation-and-buffering">Message Orientation and Buffering</a></li>
    559                <li>2.3&nbsp;&nbsp;&nbsp;<a href="#transport-independence">Connections and Transport Independence</a></li>
    560                <li>2.4&nbsp;&nbsp;&nbsp;<a href="#intermediaries">Intermediaries</a></li>
    561                <li>2.5&nbsp;&nbsp;&nbsp;<a href="#caches">Caches</a></li>
    562                <li>2.6&nbsp;&nbsp;&nbsp;<a href="#http.version">Protocol Versioning</a></li>
    563                <li>2.7&nbsp;&nbsp;&nbsp;<a href="#uri">Uniform Resource Identifiers</a><ul>
    564                      <li>2.7.1&nbsp;&nbsp;&nbsp;<a href="#http.uri">http URI scheme</a></li>
    565                      <li>2.7.2&nbsp;&nbsp;&nbsp;<a href="#https.uri">https URI scheme</a></li>
    566                      <li>2.7.3&nbsp;&nbsp;&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></li>
     563         <li><a href="#rfc.section.2">2.</a>&nbsp;&nbsp;&nbsp;<a href="#architecture">HTTP-related architecture</a><ul>
     564               <li><a href="#rfc.section.2.1">2.1</a>&nbsp;&nbsp;&nbsp;<a href="#operation">Client/Server Messaging</a></li>
     565               <li><a href="#rfc.section.2.2">2.2</a>&nbsp;&nbsp;&nbsp;<a href="#message-orientation-and-buffering">Message Orientation and Buffering</a></li>
     566               <li><a href="#rfc.section.2.3">2.3</a>&nbsp;&nbsp;&nbsp;<a href="#transport-independence">Connections and Transport Independence</a></li>
     567               <li><a href="#rfc.section.2.4">2.4</a>&nbsp;&nbsp;&nbsp;<a href="#intermediaries">Intermediaries</a></li>
     568               <li><a href="#rfc.section.2.5">2.5</a>&nbsp;&nbsp;&nbsp;<a href="#caches">Caches</a></li>
     569               <li><a href="#rfc.section.2.6">2.6</a>&nbsp;&nbsp;&nbsp;<a href="#http.version">Protocol Versioning</a></li>
     570               <li><a href="#rfc.section.2.7">2.7</a>&nbsp;&nbsp;&nbsp;<a href="#uri">Uniform Resource Identifiers</a><ul>
     571                     <li><a href="#rfc.section.2.7.1">2.7.1</a>&nbsp;&nbsp;&nbsp;<a href="#http.uri">http URI scheme</a></li>
     572                     <li><a href="#rfc.section.2.7.2">2.7.2</a>&nbsp;&nbsp;&nbsp;<a href="#https.uri">https URI scheme</a></li>
     573                     <li><a href="#rfc.section.2.7.3">2.7.3</a>&nbsp;&nbsp;&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></li>
    567574                  </ul>
    568575               </li>
    569576            </ul>
    570577         </li>
    571          <li>3.&nbsp;&nbsp;&nbsp;<a href="#http.message">Message Format</a><ul>
    572                <li>3.1&nbsp;&nbsp;&nbsp;<a href="#message.robustness">Message Parsing and Robustness</a></li>
    573                <li>3.2&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Fields</a><ul>
    574                      <li>3.2.1&nbsp;&nbsp;&nbsp;<a href="#field.parsing">Field Parsing</a></li>
    575                      <li>3.2.2&nbsp;&nbsp;&nbsp;<a href="#field.length">Field Length</a></li>
    576                      <li>3.2.3&nbsp;&nbsp;&nbsp;<a href="#field.rules">Common Field ABNF Rules</a></li>
     578         <li><a href="#rfc.section.3">3.</a>&nbsp;&nbsp;&nbsp;<a href="#http.message">Message Format</a><ul>
     579               <li><a href="#rfc.section.3.1">3.1</a>&nbsp;&nbsp;&nbsp;<a href="#message.robustness">Message Parsing and Robustness</a></li>
     580               <li><a href="#rfc.section.3.2">3.2</a>&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Fields</a><ul>
     581                     <li><a href="#rfc.section.3.2.1">3.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#field.parsing">Field Parsing</a></li>
     582                     <li><a href="#rfc.section.3.2.2">3.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#field.length">Field Length</a></li>
     583                     <li><a href="#rfc.section.3.2.3">3.2.3</a>&nbsp;&nbsp;&nbsp;<a href="#field.rules">Common Field ABNF Rules</a></li>
    577584                  </ul>
    578585               </li>
    579                <li>3.3&nbsp;&nbsp;&nbsp;<a href="#message.body">Message Body</a></li>
    580                <li>3.4&nbsp;&nbsp;&nbsp;<a href="#incomplete.messages">Incomplete Messages</a></li>
    581                <li>3.5&nbsp;&nbsp;&nbsp;<a href="#general.header.fields">General Header Fields</a></li>
     586               <li><a href="#rfc.section.3.3">3.3</a>&nbsp;&nbsp;&nbsp;<a href="#message.body">Message Body</a></li>
     587               <li><a href="#rfc.section.3.4">3.4</a>&nbsp;&nbsp;&nbsp;<a href="#incomplete.messages">Incomplete Messages</a></li>
     588               <li><a href="#rfc.section.3.5">3.5</a>&nbsp;&nbsp;&nbsp;<a href="#general.header.fields">General Header Fields</a></li>
    582589            </ul>
    583590         </li>
    584          <li>4.&nbsp;&nbsp;&nbsp;<a href="#request">Request</a><ul>
    585                <li>4.1&nbsp;&nbsp;&nbsp;<a href="#request-line">Request-Line</a><ul>
    586                      <li>4.1.1&nbsp;&nbsp;&nbsp;<a href="#method">Method</a></li>
    587                      <li>4.1.2&nbsp;&nbsp;&nbsp;<a href="#request-target">request-target</a></li>
     591         <li><a href="#rfc.section.4">4.</a>&nbsp;&nbsp;&nbsp;<a href="#request">Request</a><ul>
     592               <li><a href="#rfc.section.4.1">4.1</a>&nbsp;&nbsp;&nbsp;<a href="#request-line">Request-Line</a><ul>
     593                     <li><a href="#rfc.section.4.1.1">4.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#method">Method</a></li>
     594                     <li><a href="#rfc.section.4.1.2">4.1.2</a>&nbsp;&nbsp;&nbsp;<a href="#request-target">request-target</a></li>
    588595                  </ul>
    589596               </li>
    590                <li>4.2&nbsp;&nbsp;&nbsp;<a href="#the.resource.identified.by.a.request">The Resource Identified by a Request</a></li>
    591                <li>4.3&nbsp;&nbsp;&nbsp;<a href="#effective.request.uri">Effective Request URI</a></li>
     597               <li><a href="#rfc.section.4.2">4.2</a>&nbsp;&nbsp;&nbsp;<a href="#the.resource.identified.by.a.request">The Resource Identified by a Request</a></li>
     598               <li><a href="#rfc.section.4.3">4.3</a>&nbsp;&nbsp;&nbsp;<a href="#effective.request.uri">Effective Request URI</a></li>
    592599            </ul>
    593600         </li>
    594          <li>5.&nbsp;&nbsp;&nbsp;<a href="#response">Response</a><ul>
    595                <li>5.1&nbsp;&nbsp;&nbsp;<a href="#status-line">Status-Line</a><ul>
    596                      <li>5.1.1&nbsp;&nbsp;&nbsp;<a href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></li>
     601         <li><a href="#rfc.section.5">5.</a>&nbsp;&nbsp;&nbsp;<a href="#response">Response</a><ul>
     602               <li><a href="#rfc.section.5.1">5.1</a>&nbsp;&nbsp;&nbsp;<a href="#status-line">Status-Line</a><ul>
     603                     <li><a href="#rfc.section.5.1.1">5.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></li>
    597604                  </ul>
    598605               </li>
    599606            </ul>
    600607         </li>
    601          <li>6.&nbsp;&nbsp;&nbsp;<a href="#protocol.parameters">Protocol Parameters</a><ul>
    602                <li>6.1&nbsp;&nbsp;&nbsp;<a href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></li>
    603                <li>6.2&nbsp;&nbsp;&nbsp;<a href="#transfer.codings">Transfer Codings</a><ul>
    604                      <li>6.2.1&nbsp;&nbsp;&nbsp;<a href="#chunked.encoding">Chunked Transfer Coding</a></li>
    605                      <li>6.2.2&nbsp;&nbsp;&nbsp;<a href="#compression.codings">Compression Codings</a><ul>
    606                            <li>6.2.2.1&nbsp;&nbsp;&nbsp;<a href="#compress.coding">Compress Coding</a></li>
    607                            <li>6.2.2.2&nbsp;&nbsp;&nbsp;<a href="#deflate.coding">Deflate Coding</a></li>
    608                            <li>6.2.2.3&nbsp;&nbsp;&nbsp;<a href="#gzip.coding">Gzip Coding</a></li>
    609                         </ul>
    610                      </li>
    611                      <li>6.2.3&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registry">Transfer Coding Registry</a></li>
     608         <li><a href="#rfc.section.6">6.</a>&nbsp;&nbsp;&nbsp;<a href="#protocol.parameters">Protocol Parameters</a><ul>
     609               <li><a href="#rfc.section.6.1">6.1</a>&nbsp;&nbsp;&nbsp;<a href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></li>
     610               <li><a href="#rfc.section.6.2">6.2</a>&nbsp;&nbsp;&nbsp;<a href="#transfer.codings">Transfer Codings</a><ul>
     611                     <li><a href="#rfc.section.6.2.1">6.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#chunked.encoding">Chunked Transfer Coding</a></li>
     612                     <li><a href="#rfc.section.6.2.2">6.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#compression.codings">Compression Codings</a></li>
     613                     <li><a href="#rfc.section.6.2.3">6.2.3</a>&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registry">Transfer Coding Registry</a></li>
    612614                  </ul>
    613615               </li>
    614                <li>6.3&nbsp;&nbsp;&nbsp;<a href="#product.tokens">Product Tokens</a></li>
    615                <li>6.4&nbsp;&nbsp;&nbsp;<a href="#quality.values">Quality Values</a></li>
     616               <li><a href="#rfc.section.6.3">6.3</a>&nbsp;&nbsp;&nbsp;<a href="#product.tokens">Product Tokens</a></li>
     617               <li><a href="#rfc.section.6.4">6.4</a>&nbsp;&nbsp;&nbsp;<a href="#quality.values">Quality Values</a></li>
    616618            </ul>
    617619         </li>
    618          <li>7.&nbsp;&nbsp;&nbsp;<a href="#connections">Connections</a><ul>
    619                <li>7.1&nbsp;&nbsp;&nbsp;<a href="#persistent.connections">Persistent Connections</a><ul>
    620                      <li>7.1.1&nbsp;&nbsp;&nbsp;<a href="#persistent.purpose">Purpose</a></li>
    621                      <li>7.1.2&nbsp;&nbsp;&nbsp;<a href="#persistent.overall">Overall Operation</a><ul>
    622                            <li>7.1.2.1&nbsp;&nbsp;&nbsp;<a href="#persistent.negotiation">Negotiation</a></li>
    623                            <li>7.1.2.2&nbsp;&nbsp;&nbsp;<a href="#pipelining">Pipelining</a></li>
    624                         </ul>
    625                      </li>
    626                      <li>7.1.3&nbsp;&nbsp;&nbsp;<a href="#persistent.proxy">Proxy Servers</a><ul>
    627                            <li>7.1.3.1&nbsp;&nbsp;&nbsp;<a href="#end-to-end.and.hop-by-hop.header-fields">End-to-end and Hop-by-hop Header Fields</a></li>
    628                            <li>7.1.3.2&nbsp;&nbsp;&nbsp;<a href="#non-modifiable.header-fields">Non-modifiable Header Fields</a></li>
    629                         </ul>
    630                      </li>
    631                      <li>7.1.4&nbsp;&nbsp;&nbsp;<a href="#persistent.practical">Practical Considerations</a></li>
     620         <li><a href="#rfc.section.7">7.</a>&nbsp;&nbsp;&nbsp;<a href="#connections">Connections</a><ul>
     621               <li><a href="#rfc.section.7.1">7.1</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.connections">Persistent Connections</a><ul>
     622                     <li><a href="#rfc.section.7.1.1">7.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.purpose">Purpose</a></li>
     623                     <li><a href="#rfc.section.7.1.2">7.1.2</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.overall">Overall Operation</a></li>
     624                     <li><a href="#rfc.section.7.1.3">7.1.3</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.proxy">Proxy Servers</a></li>
     625                     <li><a href="#rfc.section.7.1.4">7.1.4</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.practical">Practical Considerations</a></li>
    632626                  </ul>
    633627               </li>
    634                <li>7.2&nbsp;&nbsp;&nbsp;<a href="#message.transmission.requirements">Message Transmission Requirements</a><ul>
    635                      <li>7.2.1&nbsp;&nbsp;&nbsp;<a href="#persistent.flow">Persistent Connections and Flow Control</a></li>
    636                      <li>7.2.2&nbsp;&nbsp;&nbsp;<a href="#persistent.monitor">Monitoring Connections for Error Status Messages</a></li>
    637                      <li>7.2.3&nbsp;&nbsp;&nbsp;<a href="#use.of.the.100.status">Use of the 100 (Continue) Status</a></li>
    638                      <li>7.2.4&nbsp;&nbsp;&nbsp;<a href="#connection.premature">Client Behavior if Server Prematurely Closes Connection</a></li>
     628               <li><a href="#rfc.section.7.2">7.2</a>&nbsp;&nbsp;&nbsp;<a href="#message.transmission.requirements">Message Transmission Requirements</a><ul>
     629                     <li><a href="#rfc.section.7.2.1">7.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.flow">Persistent Connections and Flow Control</a></li>
     630                     <li><a href="#rfc.section.7.2.2">7.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.monitor">Monitoring Connections for Error Status Messages</a></li>
     631                     <li><a href="#rfc.section.7.2.3">7.2.3</a>&nbsp;&nbsp;&nbsp;<a href="#use.of.the.100.status">Use of the 100 (Continue) Status</a></li>
     632                     <li><a href="#rfc.section.7.2.4">7.2.4</a>&nbsp;&nbsp;&nbsp;<a href="#connection.premature">Client Behavior if Server Prematurely Closes Connection</a></li>
    639633                  </ul>
    640634               </li>
    641635            </ul>
    642636         </li>
    643          <li>8.&nbsp;&nbsp;&nbsp;<a href="#misc">Miscellaneous notes that might disappear</a><ul>
    644                <li>8.1&nbsp;&nbsp;&nbsp;<a href="#scheme.aliases">Scheme aliases considered harmful</a></li>
    645                <li>8.2&nbsp;&nbsp;&nbsp;<a href="#http.proxy">Use of HTTP for proxy communication</a></li>
    646                <li>8.3&nbsp;&nbsp;&nbsp;<a href="#http.intercept">Interception of HTTP for access control</a></li>
    647                <li>8.4&nbsp;&nbsp;&nbsp;<a href="#http.others">Use of HTTP by other protocols</a></li>
    648                <li>8.5&nbsp;&nbsp;&nbsp;<a href="#http.media">Use of HTTP by media type specification</a></li>
     637         <li><a href="#rfc.section.8">8.</a>&nbsp;&nbsp;&nbsp;<a href="#misc">Miscellaneous notes that might disappear</a><ul>
     638               <li><a href="#rfc.section.8.1">8.1</a>&nbsp;&nbsp;&nbsp;<a href="#scheme.aliases">Scheme aliases considered harmful</a></li>
     639               <li><a href="#rfc.section.8.2">8.2</a>&nbsp;&nbsp;&nbsp;<a href="#http.proxy">Use of HTTP for proxy communication</a></li>
     640               <li><a href="#rfc.section.8.3">8.3</a>&nbsp;&nbsp;&nbsp;<a href="#http.intercept">Interception of HTTP for access control</a></li>
     641               <li><a href="#rfc.section.8.4">8.4</a>&nbsp;&nbsp;&nbsp;<a href="#http.others">Use of HTTP by other protocols</a></li>
     642               <li><a href="#rfc.section.8.5">8.5</a>&nbsp;&nbsp;&nbsp;<a href="#http.media">Use of HTTP by media type specification</a></li>
    649643            </ul>
    650644         </li>
    651          <li>9.&nbsp;&nbsp;&nbsp;<a href="#header.field.definitions">Header Field Definitions</a><ul>
    652                <li>9.1&nbsp;&nbsp;&nbsp;<a href="#header.connection">Connection</a></li>
    653                <li>9.2&nbsp;&nbsp;&nbsp;<a href="#header.content-length">Content-Length</a></li>
    654                <li>9.3&nbsp;&nbsp;&nbsp;<a href="#header.date">Date</a><ul>
    655                      <li>9.3.1&nbsp;&nbsp;&nbsp;<a href="#clockless.origin.server.operation">Clockless Origin Server Operation</a></li>
     645         <li><a href="#rfc.section.9">9.</a>&nbsp;&nbsp;&nbsp;<a href="#header.field.definitions">Header Field Definitions</a><ul>
     646               <li><a href="#rfc.section.9.1">9.1</a>&nbsp;&nbsp;&nbsp;<a href="#header.connection">Connection</a></li>
     647               <li><a href="#rfc.section.9.2">9.2</a>&nbsp;&nbsp;&nbsp;<a href="#header.content-length">Content-Length</a></li>
     648               <li><a href="#rfc.section.9.3">9.3</a>&nbsp;&nbsp;&nbsp;<a href="#header.date">Date</a><ul>
     649                     <li><a href="#rfc.section.9.3.1">9.3.1</a>&nbsp;&nbsp;&nbsp;<a href="#clockless.origin.server.operation">Clockless Origin Server Operation</a></li>
    656650                  </ul>
    657651               </li>
    658                <li>9.4&nbsp;&nbsp;&nbsp;<a href="#header.host">Host</a></li>
    659                <li>9.5&nbsp;&nbsp;&nbsp;<a href="#header.te">TE</a></li>
    660                <li>9.6&nbsp;&nbsp;&nbsp;<a href="#header.trailer">Trailer</a></li>
    661                <li>9.7&nbsp;&nbsp;&nbsp;<a href="#header.transfer-encoding">Transfer-Encoding</a></li>
    662                <li>9.8&nbsp;&nbsp;&nbsp;<a href="#header.upgrade">Upgrade</a><ul>
    663                      <li>9.8.1&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registry">Upgrade Token Registry</a></li>
     652               <li><a href="#rfc.section.9.4">9.4</a>&nbsp;&nbsp;&nbsp;<a href="#header.host">Host</a></li>
     653               <li><a href="#rfc.section.9.5">9.5</a>&nbsp;&nbsp;&nbsp;<a href="#header.te">TE</a></li>
     654               <li><a href="#rfc.section.9.6">9.6</a>&nbsp;&nbsp;&nbsp;<a href="#header.trailer">Trailer</a></li>
     655               <li><a href="#rfc.section.9.7">9.7</a>&nbsp;&nbsp;&nbsp;<a href="#header.transfer-encoding">Transfer-Encoding</a></li>
     656               <li><a href="#rfc.section.9.8">9.8</a>&nbsp;&nbsp;&nbsp;<a href="#header.upgrade">Upgrade</a><ul>
     657                     <li><a href="#rfc.section.9.8.1">9.8.1</a>&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registry">Upgrade Token Registry</a></li>
    664658                  </ul>
    665659               </li>
    666                <li>9.9&nbsp;&nbsp;&nbsp;<a href="#header.via">Via</a></li>
     660               <li><a href="#rfc.section.9.9">9.9</a>&nbsp;&nbsp;&nbsp;<a href="#header.via">Via</a></li>
    667661            </ul>
    668662         </li>
    669          <li>10.&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a><ul>
    670                <li>10.1&nbsp;&nbsp;&nbsp;<a href="#header.field.registration">Header Field Registration</a></li>
    671                <li>10.2&nbsp;&nbsp;&nbsp;<a href="#uri.scheme.registration">URI Scheme Registration</a></li>
    672                <li>10.3&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.http">Internet Media Type Registrations</a><ul>
    673                      <li>10.3.1&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.message.http">Internet Media Type message/http</a></li>
    674                      <li>10.3.2&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.application.http">Internet Media Type application/http</a></li>
     663         <li><a href="#rfc.section.10">10.</a>&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a><ul>
     664               <li><a href="#rfc.section.10.1">10.1</a>&nbsp;&nbsp;&nbsp;<a href="#header.field.registration">Header Field Registration</a></li>
     665               <li><a href="#rfc.section.10.2">10.2</a>&nbsp;&nbsp;&nbsp;<a href="#uri.scheme.registration">URI Scheme Registration</a></li>
     666               <li><a href="#rfc.section.10.3">10.3</a>&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.http">Internet Media Type Registrations</a><ul>
     667                     <li><a href="#rfc.section.10.3.1">10.3.1</a>&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.message.http">Internet Media Type message/http</a></li>
     668                     <li><a href="#rfc.section.10.3.2">10.3.2</a>&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.application.http">Internet Media Type application/http</a></li>
    675669                  </ul>
    676670               </li>
    677                <li>10.4&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registration">Transfer Coding Registry</a></li>
    678                <li>10.5&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registration">Upgrade Token Registration</a></li>
     671               <li><a href="#rfc.section.10.4">10.4</a>&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registration">Transfer Coding Registry</a></li>
     672               <li><a href="#rfc.section.10.5">10.5</a>&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registration">Upgrade Token Registration</a></li>
    679673            </ul>
    680674         </li>
    681          <li>11.&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul>
    682                <li>11.1&nbsp;&nbsp;&nbsp;<a href="#personal.information">Personal Information</a></li>
    683                <li>11.2&nbsp;&nbsp;&nbsp;<a href="#abuse.of.server.log.information">Abuse of Server Log Information</a></li>
    684                <li>11.3&nbsp;&nbsp;&nbsp;<a href="#attack.pathname">Attacks Based On File and Path Names</a></li>
    685                <li>11.4&nbsp;&nbsp;&nbsp;<a href="#dns.related.attacks">DNS-related Attacks</a></li>
    686                <li>11.5&nbsp;&nbsp;&nbsp;<a href="#attack.proxies">Proxies and Caching</a></li>
    687                <li>11.6&nbsp;&nbsp;&nbsp;<a href="#attack.protocol.element.size.overflows">Protocol Element Size Overflows</a></li>
    688                <li>11.7&nbsp;&nbsp;&nbsp;<a href="#attack.DoS">Denial of Service Attacks on Proxies</a></li>
     675         <li><a href="#rfc.section.11">11.</a>&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul>
     676               <li><a href="#rfc.section.11.1">11.1</a>&nbsp;&nbsp;&nbsp;<a href="#personal.information">Personal Information</a></li>
     677               <li><a href="#rfc.section.11.2">11.2</a>&nbsp;&nbsp;&nbsp;<a href="#abuse.of.server.log.information">Abuse of Server Log Information</a></li>
     678               <li><a href="#rfc.section.11.3">11.3</a>&nbsp;&nbsp;&nbsp;<a href="#attack.pathname">Attacks Based On File and Path Names</a></li>
     679               <li><a href="#rfc.section.11.4">11.4</a>&nbsp;&nbsp;&nbsp;<a href="#dns.related.attacks">DNS-related Attacks</a></li>
     680               <li><a href="#rfc.section.11.5">11.5</a>&nbsp;&nbsp;&nbsp;<a href="#attack.proxies">Proxies and Caching</a></li>
     681               <li><a href="#rfc.section.11.6">11.6</a>&nbsp;&nbsp;&nbsp;<a href="#attack.protocol.element.size.overflows">Protocol Element Size Overflows</a></li>
     682               <li><a href="#rfc.section.11.7">11.7</a>&nbsp;&nbsp;&nbsp;<a href="#attack.DoS">Denial of Service Attacks on Proxies</a></li>
    689683            </ul>
    690684         </li>
    691          <li>12.&nbsp;&nbsp;&nbsp;<a href="#acks">Acknowledgments</a></li>
    692          <li>13.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul>
    693                <li>13.1&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
    694                <li>13.2&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
     685         <li><a href="#rfc.section.12">12.</a>&nbsp;&nbsp;&nbsp;<a href="#acks">Acknowledgments</a></li>
     686         <li><a href="#rfc.section.13">13.</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul>
     687               <li><a href="#rfc.section.13.1">13.1</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
     688               <li><a href="#rfc.section.13.2">13.2</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
    695689            </ul>
    696690         </li>
    697          <li><a href="#rfc.authors">Authors' Addresses</a></li>
    698          <li>A.&nbsp;&nbsp;&nbsp;<a href="#compatibility">HTTP Version History</a><ul>
    699                <li>A.1&nbsp;&nbsp;&nbsp;<a href="#changes.from.1.0">Changes from HTTP/1.0</a><ul>
    700                      <li>A.1.1&nbsp;&nbsp;&nbsp;<a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses">Multi-homed Web Servers</a></li>
    701                      <li>A.1.2&nbsp;&nbsp;&nbsp;<a href="#compatibility.with.http.1.0.persistent.connections">Keep-Alive Connections</a></li>
     691         <li><a href="#rfc.section.A">A.</a>&nbsp;&nbsp;&nbsp;<a href="#compatibility">HTTP Version History</a><ul>
     692               <li><a href="#rfc.section.A.1">A.1</a>&nbsp;&nbsp;&nbsp;<a href="#changes.from.1.0">Changes from HTTP/1.0</a><ul>
     693                     <li><a href="#rfc.section.A.1.1">A.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses">Multi-homed Web Servers</a></li>
     694                     <li><a href="#rfc.section.A.1.2">A.1.2</a>&nbsp;&nbsp;&nbsp;<a href="#compatibility.with.http.1.0.persistent.connections">Keep-Alive Connections</a></li>
    702695                  </ul>
    703696               </li>
    704                <li>A.2&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2616">Changes from RFC 2616</a></li>
     697               <li><a href="#rfc.section.A.2">A.2</a>&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2616">Changes from RFC 2616</a></li>
    705698            </ul>
    706699         </li>
    707          <li>B.&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
    708          <li>C.&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
    709                <li>C.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.1">Since RFC 2616</a></li>
    710                <li>C.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.2">Since draft-ietf-httpbis-p1-messaging-00</a></li>
    711                <li>C.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.3">Since draft-ietf-httpbis-p1-messaging-01</a></li>
    712                <li>C.4&nbsp;&nbsp;&nbsp;<a href="#changes.since.02">Since draft-ietf-httpbis-p1-messaging-02</a></li>
    713                <li>C.5&nbsp;&nbsp;&nbsp;<a href="#changes.since.03">Since draft-ietf-httpbis-p1-messaging-03</a></li>
    714                <li>C.6&nbsp;&nbsp;&nbsp;<a href="#changes.since.04">Since draft-ietf-httpbis-p1-messaging-04</a></li>
    715                <li>C.7&nbsp;&nbsp;&nbsp;<a href="#changes.since.05">Since draft-ietf-httpbis-p1-messaging-05</a></li>
    716                <li>C.8&nbsp;&nbsp;&nbsp;<a href="#changes.since.06">Since draft-ietf-httpbis-p1-messaging-06</a></li>
    717                <li>C.9&nbsp;&nbsp;&nbsp;<a href="#changes.since.07">Since draft-ietf-httpbis-p1-messaging-07</a></li>
    718                <li>C.10&nbsp;&nbsp;&nbsp;<a href="#changes.since.08">Since draft-ietf-httpbis-p1-messaging-08</a></li>
    719                <li>C.11&nbsp;&nbsp;&nbsp;<a href="#changes.since.09">Since draft-ietf-httpbis-p1-messaging-09</a></li>
    720                <li>C.12&nbsp;&nbsp;&nbsp;<a href="#changes.since.10">Since draft-ietf-httpbis-p1-messaging-10</a></li>
    721                <li>C.13&nbsp;&nbsp;&nbsp;<a href="#changes.since.11">Since draft-ietf-httpbis-p1-messaging-11</a></li>
    722                <li>C.14&nbsp;&nbsp;&nbsp;<a href="#changes.since.12">Since draft-ietf-httpbis-p1-messaging-12</a></li>
    723                <li>C.15&nbsp;&nbsp;&nbsp;<a href="#changes.since.13">Since draft-ietf-httpbis-p1-messaging-13</a></li>
    724                <li>C.16&nbsp;&nbsp;&nbsp;<a href="#changes.since.14">Since draft-ietf-httpbis-p1-messaging-14</a></li>
    725                <li>C.17&nbsp;&nbsp;&nbsp;<a href="#changes.since.15">Since draft-ietf-httpbis-p1-messaging-15</a></li>
     700         <li><a href="#rfc.section.B">B.</a>&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
     701         <li><a href="#rfc.section.C">C.</a>&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
     702               <li><a href="#rfc.section.C.1">C.1</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.1">Since RFC 2616</a></li>
     703               <li><a href="#rfc.section.C.2">C.2</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.2">Since draft-ietf-httpbis-p1-messaging-00</a></li>
     704               <li><a href="#rfc.section.C.3">C.3</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.C.3">Since draft-ietf-httpbis-p1-messaging-01</a></li>
     705               <li><a href="#rfc.section.C.4">C.4</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.02">Since draft-ietf-httpbis-p1-messaging-02</a></li>
     706               <li><a href="#rfc.section.C.5">C.5</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.03">Since draft-ietf-httpbis-p1-messaging-03</a></li>
     707               <li><a href="#rfc.section.C.6">C.6</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.04">Since draft-ietf-httpbis-p1-messaging-04</a></li>
     708               <li><a href="#rfc.section.C.7">C.7</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.05">Since draft-ietf-httpbis-p1-messaging-05</a></li>
     709               <li><a href="#rfc.section.C.8">C.8</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.06">Since draft-ietf-httpbis-p1-messaging-06</a></li>
     710               <li><a href="#rfc.section.C.9">C.9</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.07">Since draft-ietf-httpbis-p1-messaging-07</a></li>
     711               <li><a href="#rfc.section.C.10">C.10</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.08">Since draft-ietf-httpbis-p1-messaging-08</a></li>
     712               <li><a href="#rfc.section.C.11">C.11</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.09">Since draft-ietf-httpbis-p1-messaging-09</a></li>
     713               <li><a href="#rfc.section.C.12">C.12</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.10">Since draft-ietf-httpbis-p1-messaging-10</a></li>
     714               <li><a href="#rfc.section.C.13">C.13</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.11">Since draft-ietf-httpbis-p1-messaging-11</a></li>
     715               <li><a href="#rfc.section.C.14">C.14</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.12">Since draft-ietf-httpbis-p1-messaging-12</a></li>
     716               <li><a href="#rfc.section.C.15">C.15</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.13">Since draft-ietf-httpbis-p1-messaging-13</a></li>
     717               <li><a href="#rfc.section.C.16">C.16</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.14">Since draft-ietf-httpbis-p1-messaging-14</a></li>
     718               <li><a href="#rfc.section.C.17">C.17</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.15">Since draft-ietf-httpbis-p1-messaging-15</a></li>
    726719            </ul>
    727720         </li>
    728721         <li><a href="#rfc.index">Index</a></li>
     722         <li><a href="#rfc.authors">Authors' Addresses</a></li>
    729723      </ul>
    730       <h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;<a id="introduction" href="#introduction">Introduction</a></h1>
    731       <p id="rfc.section.1.p.1">The Hypertext Transfer Protocol (HTTP) is an application-level request/response protocol that uses extensible semantics and
    732          MIME-like message payloads for flexible interaction with network-based hypertext information systems. HTTP relies upon the
    733          Uniform Resource Identifier (URI) standard <a href="#RFC3986" id="rfc.xref.RFC3986.1"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a> to indicate the target resource and relationships between resources. Messages are passed in a format similar to that used
    734          by Internet mail <a href="#RFC5322" id="rfc.xref.RFC5322.1"><cite title="Internet Message Format">[RFC5322]</cite></a> and the Multipurpose Internet Mail Extensions (MIME) <a href="#RFC2045" id="rfc.xref.RFC2045.1"><cite title="Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies">[RFC2045]</cite></a> (see <a href="p3-payload.html#differences.between.http.and.mime" title="Differences between HTTP and MIME">Appendix A</a> of <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> for the differences between HTTP and MIME messages).
    735       </p>
    736       <p id="rfc.section.1.p.2">HTTP is a generic interface protocol for information systems. It is designed to hide the details of how a service is implemented
    737          by presenting a uniform interface to clients that is independent of the types of resources provided. Likewise, servers do
    738          not need to be aware of each client's purpose: an HTTP request can be considered in isolation rather than being associated
    739          with a specific type of client or a predetermined sequence of application steps. The result is a protocol that can be used
    740          effectively in many different contexts and for which implementations can evolve independently over time.
    741       </p>
    742       <p id="rfc.section.1.p.3">HTTP is also designed for use as an intermediation protocol for translating communication to and from non-HTTP information
    743          systems. HTTP proxies and gateways can provide access to alternative information services by translating their diverse protocols
    744          into a hypertext format that can be viewed and manipulated by clients in the same way as HTTP services.
    745       </p>
    746       <p id="rfc.section.1.p.4">One consequence of HTTP flexibility is that the protocol cannot be defined in terms of what occurs behind the interface. Instead,
    747          we are limited to defining the syntax of communication, the intent of received communication, and the expected behavior of
    748          recipients. If the communication is considered in isolation, then successful actions ought to be reflected in corresponding
    749          changes to the observable interface provided by servers. However, since multiple clients might act in parallel and perhaps
    750          at cross-purposes, we cannot require that such changes be observable beyond the scope of a single response.
    751       </p>
    752       <p id="rfc.section.1.p.5">This document is Part 1 of the seven-part specification of HTTP, defining the protocol referred to as "HTTP/1.1", obsoleting <a href="#RFC2616" id="rfc.xref.RFC2616.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> and <a href="#RFC2145" id="rfc.xref.RFC2145.2"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a>. Part 1 describes the architectural elements that are used or referred to in HTTP, defines the "http" and "https" URI schemes,
    753          describes overall network operation and connection management, and defines HTTP message framing and forwarding requirements.
    754          Our goal is to define all of the mechanisms necessary for HTTP message handling that are independent of message semantics,
    755          thereby defining the complete set of requirements for message parsers and message-forwarding intermediaries.
    756       </p>
    757       <h2 id="rfc.section.1.1"><a href="#rfc.section.1.1">1.1</a>&nbsp;<a id="intro.requirements" href="#intro.requirements">Requirements</a></h2>
    758       <p id="rfc.section.1.1.p.1">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
    759          in this document are to be interpreted as described in <a href="#RFC2119" id="rfc.xref.RFC2119.1"><cite title="Key words for use in RFCs to Indicate Requirement Levels">[RFC2119]</cite></a>.
    760       </p>
    761       <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the "MUST" or "REQUIRED" level requirements for the
    762          protocols it implements. An implementation that satisfies all the "MUST" or "REQUIRED" level and all the "SHOULD" level requirements
    763          for its protocols is said to be "unconditionally compliant"; one that satisfies all the "MUST" level requirements but not
    764          all the "SHOULD" level requirements for its protocols is said to be "conditionally compliant".
    765       </p>
    766       <div id="rfc.iref.g.1"></div>
    767       <div id="rfc.iref.g.2"></div>
    768       <div id="rfc.iref.g.3"></div>
    769       <div id="rfc.iref.g.4"></div>
    770       <div id="rfc.iref.g.5"></div>
    771       <div id="rfc.iref.g.6"></div>
    772       <div id="rfc.iref.g.7"></div>
    773       <div id="rfc.iref.g.8"></div>
    774       <div id="rfc.iref.g.9"></div>
    775       <div id="rfc.iref.g.10"></div>
    776       <div id="rfc.iref.g.11"></div>
    777       <div id="rfc.iref.g.12"></div>
    778       <h2 id="rfc.section.1.2"><a href="#rfc.section.1.2">1.2</a>&nbsp;<a id="notation" href="#notation">Syntax Notation</a></h2>
    779       <p id="rfc.section.1.2.p.1">This specification uses the Augmented Backus-Naur Form (ABNF) notation of <a href="#RFC5234" id="rfc.xref.RFC5234.1"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>.
    780       </p>
    781       <div id="core.rules">
    782          <p id="rfc.section.1.2.p.2">                        The following core rules are included by reference, as defined in <a href="#RFC5234" id="rfc.xref.RFC5234.2"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>, <a href="http://tools.ietf.org/html/rfc5234#appendix-B.1">Appendix B.1</a>: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
    783             (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), VCHAR (any visible <a href="#USASCII" id="rfc.xref.USASCII.1"><cite title="Coded Character Set -- 7-bit American Standard Code for Information Interchange">[USASCII]</cite></a> character), and WSP (whitespace).
     724      <div id="introduction">
     725         <h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;<a href="#introduction">Introduction</a></h1>
     726         <p id="rfc.section.1.p.1">The Hypertext Transfer Protocol (HTTP) is an application-level request/response protocol that uses extensible semantics and
     727            MIME-like message payloads for flexible interaction with network-based hypertext information systems. HTTP relies upon the
     728            Uniform Resource Identifier (URI) standard <a href="#RFC3986" id="rfc.xref.RFC3986.1"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a> to indicate the target resource and relationships between resources. Messages are passed in a format similar to that used
     729            by Internet mail <a href="#RFC5322" id="rfc.xref.RFC5322.1"><cite title="Internet Message Format">[RFC5322]</cite></a> and the Multipurpose Internet Mail Extensions (MIME) <a href="#RFC2045" id="rfc.xref.RFC2045.1"><cite title="Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies">[RFC2045]</cite></a> (see <a href="p3-payload.html#differences.between.http.and.mime" title="Differences between HTTP and MIME">Appendix A</a> of <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> for the differences between HTTP and MIME messages).
    784730         </p>
    785       </div>
    786       <p id="rfc.section.1.2.p.3">As a syntactic convention, ABNF rule names prefixed with "obs-" denote "obsolete" grammar rules that appear for historical
    787          reasons.
    788       </p>
    789       <h3 id="rfc.section.1.2.1"><a href="#rfc.section.1.2.1">1.2.1</a>&nbsp;<a id="notation.abnf" href="#notation.abnf">ABNF Extension: #rule</a></h3>
    790       <p id="rfc.section.1.2.1.p.1">The #rule extension to the ABNF rules of <a href="#RFC5234" id="rfc.xref.RFC5234.3"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> is used to improve readability.
    791       </p>
    792       <p id="rfc.section.1.2.1.p.2">A construct "#" is defined, similar to "*", for defining comma-delimited lists of elements. The full form is "&lt;n&gt;#&lt;m&gt;element"
    793          indicating at least &lt;n&gt; and at most &lt;m&gt; elements, each separated by a single comma (",") and optional whitespace (OWS, <a href="#basic.rules" title="Basic Rules">Section&nbsp;1.2.2</a>).
    794       </p>
    795       <div id="rfc.figure.u.1"></div>
    796       <p>Thus,</p><pre class="text">  1#element =&gt; element *( OWS "," OWS element )
     731         <p id="rfc.section.1.p.2">HTTP is a generic interface protocol for information systems. It is designed to hide the details of how a service is implemented
     732            by presenting a uniform interface to clients that is independent of the types of resources provided. Likewise, servers do
     733            not need to be aware of each client's purpose: an HTTP request can be considered in isolation rather than being associated
     734            with a specific type of client or a predetermined sequence of application steps. The result is a protocol that can be used
     735            effectively in many different contexts and for which implementations can evolve independently over time.
     736         </p>
     737         <p id="rfc.section.1.p.3">HTTP is also designed for use as an intermediation protocol for translating communication to and from non-HTTP information
     738            systems. HTTP proxies and gateways can provide access to alternative information services by translating their diverse protocols
     739            into a hypertext format that can be viewed and manipulated by clients in the same way as HTTP services.
     740         </p>
     741         <p id="rfc.section.1.p.4">One consequence of HTTP flexibility is that the protocol cannot be defined in terms of what occurs behind the interface. Instead,
     742            we are limited to defining the syntax of communication, the intent of received communication, and the expected behavior of
     743            recipients. If the communication is considered in isolation, then successful actions ought to be reflected in corresponding
     744            changes to the observable interface provided by servers. However, since multiple clients might act in parallel and perhaps
     745            at cross-purposes, we cannot require that such changes be observable beyond the scope of a single response.
     746         </p>
     747         <p id="rfc.section.1.p.5">This document is Part 1 of the seven-part specification of HTTP, defining the protocol referred to as "HTTP/1.1", obsoleting <a href="#RFC2616" id="rfc.xref.RFC2616.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> and <a href="#RFC2145" id="rfc.xref.RFC2145.2"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a>. Part 1 describes the architectural elements that are used or referred to in HTTP, defines the "http" and "https" URI schemes,
     748            describes overall network operation and connection management, and defines HTTP message framing and forwarding requirements.
     749            Our goal is to define all of the mechanisms necessary for HTTP message handling that are independent of message semantics,
     750            thereby defining the complete set of requirements for message parsers and message-forwarding intermediaries.
     751         </p>
     752         <div id="intro.requirements">
     753            <h2 id="rfc.section.1.1"><a href="#rfc.section.1.1">1.1</a>&nbsp;<a href="#intro.requirements">Requirements</a></h2>
     754            <p id="rfc.section.1.1.p.1">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
     755               in this document are to be interpreted as described in <a href="#RFC2119" id="rfc.xref.RFC2119.1"><cite title="Key words for use in RFCs to Indicate Requirement Levels">[RFC2119]</cite></a>.
     756            </p>
     757            <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the "MUST" or "REQUIRED" level requirements for the
     758               protocols it implements. An implementation that satisfies all the "MUST" or "REQUIRED" level and all the "SHOULD" level requirements
     759               for its protocols is said to be "unconditionally compliant"; one that satisfies all the "MUST" level requirements but not
     760               all the "SHOULD" level requirements for its protocols is said to be "conditionally compliant".
     761            </p>
     762         </div>
     763         <div id="notation">
     764            <div id="rfc.iref.g.1"></div>
     765            <div id="rfc.iref.g.2"></div>
     766            <div id="rfc.iref.g.3"></div>
     767            <div id="rfc.iref.g.4"></div>
     768            <div id="rfc.iref.g.5"></div>
     769            <div id="rfc.iref.g.6"></div>
     770            <div id="rfc.iref.g.7"></div>
     771            <div id="rfc.iref.g.8"></div>
     772            <div id="rfc.iref.g.9"></div>
     773            <div id="rfc.iref.g.10"></div>
     774            <div id="rfc.iref.g.11"></div>
     775            <div id="rfc.iref.g.12"></div>
     776            <h2 id="rfc.section.1.2"><a href="#rfc.section.1.2">1.2</a>&nbsp;<a href="#notation">Syntax Notation</a></h2>
     777            <p id="rfc.section.1.2.p.1">This specification uses the Augmented Backus-Naur Form (ABNF) notation of <a href="#RFC5234" id="rfc.xref.RFC5234.1"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>.
     778            </p>
     779            <div id="core.rules">
     780               <p id="rfc.section.1.2.p.2">            The following core rules are included by reference, as defined in <a href="#RFC5234" id="rfc.xref.RFC5234.2"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>, <a href="https://tools.ietf.org/html/rfc5234#appendix-B.1">Appendix B.1</a>: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
     781                  (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), VCHAR (any visible <a href="#USASCII" id="rfc.xref.USASCII.1"><cite title="Coded Character Set -- 7-bit American Standard Code for Information Interchange">[USASCII]</cite></a> character), and WSP (whitespace).
     782               </p>
     783            </div>
     784            <p id="rfc.section.1.2.p.3">As a syntactic convention, ABNF rule names prefixed with "obs-" denote "obsolete" grammar rules that appear for historical
     785               reasons.
     786            </p>
     787            <div id="notation.abnf">
     788               <h3 id="rfc.section.1.2.1"><a href="#rfc.section.1.2.1">1.2.1</a>&nbsp;<a href="#notation.abnf">ABNF Extension: #rule</a></h3>
     789               <p id="rfc.section.1.2.1.p.1">The #rule extension to the ABNF rules of <a href="#RFC5234" id="rfc.xref.RFC5234.3"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> is used to improve readability.
     790               </p>
     791               <p id="rfc.section.1.2.1.p.2">A construct "#" is defined, similar to "*", for defining comma-delimited lists of elements. The full form is "&lt;n&gt;#&lt;m&gt;element"
     792                  indicating at least &lt;n&gt; and at most &lt;m&gt; elements, each separated by a single comma (",") and optional whitespace (OWS, <a href="#basic.rules" title="Basic Rules">Section&nbsp;1.2.2</a>).
     793               </p>
     794               <div id="rfc.figure.u.1"></div>
     795               <p>Thus,</p><pre class="text">  1#element =&gt; element *( OWS "," OWS element )
    797796</pre><div id="rfc.figure.u.2"></div>
    798       <p>and:</p><pre class="text">  #element =&gt; [ 1#element ]
     797               <p>and:</p><pre class="text">  #element =&gt; [ 1#element ]
    799798</pre><div id="rfc.figure.u.3"></div>
    800       <p>and for n &gt;= 1 and m &gt; 1:</p><pre class="text">  &lt;n&gt;#&lt;m&gt;element =&gt; element &lt;n-1&gt;*&lt;m-1&gt;( OWS "," OWS element )
     799               <p>and for n &gt;= 1 and m &gt; 1:</p><pre class="text">  &lt;n&gt;#&lt;m&gt;element =&gt; element &lt;n-1&gt;*&lt;m-1&gt;( OWS "," OWS element )
    801800</pre><p id="rfc.section.1.2.1.p.6">For compatibility with legacy list rules, recipients <em class="bcp14">SHOULD</em> accept empty list elements. In other words, consumers would follow the list productions:
    802       </p>
    803       <div id="rfc.figure.u.4"></div><pre class="text">  #element =&gt; [ ( "," / element ) *( OWS "," [ OWS element ] ) ]
     801               </p>
     802               <div id="rfc.figure.u.4"></div><pre class="text">  #element =&gt; [ ( "," / element ) *( OWS "," [ OWS element ] ) ]
    804803 
    805804  1#element =&gt; *( "," OWS ) element *( OWS "," [ OWS element ] )
    806805</pre><p id="rfc.section.1.2.1.p.8">Note that empty elements do not contribute to the count of elements present, though.</p>
    807       <p id="rfc.section.1.2.1.p.9">For example, given these ABNF productions:</p>
    808       <div id="rfc.figure.u.5"></div><pre class="text">  example-list      = 1#example-list-elmt
     806               <p id="rfc.section.1.2.1.p.9">For example, given these ABNF productions:</p>
     807               <div id="rfc.figure.u.5"></div><pre class="text">  example-list      = 1#example-list-elmt
    809808  example-list-elmt = token ; see <a href="#field.rules" title="Common Field ABNF Rules">Section&nbsp;3.2.3</a>
    810809</pre><p id="rfc.section.1.2.1.p.11">Then these are valid values for example-list (not including the double quotes, which are present for delimitation only):</p>
    811       <div id="rfc.figure.u.6"></div><pre class="text">  "foo,bar"
     810               <div id="rfc.figure.u.6"></div><pre class="text">  "foo,bar"
    812811  " foo ,bar,"
    813812  "  foo , ,bar,charlie   "
    814813  "foo ,bar,   charlie "
    815814</pre><p id="rfc.section.1.2.1.p.13">But these values would be invalid, as at least one non-empty element is required:</p>
    816       <div id="rfc.figure.u.7"></div><pre class="text">  ""
     815               <div id="rfc.figure.u.7"></div><pre class="text">  ""
    817816  ","
    818817  ",   ,"
    819 </pre><p id="rfc.section.1.2.1.p.15"> <a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;B</a> shows the collected ABNF, with the list rules expanded as explained above.
    820       </p>
    821       <h3 id="rfc.section.1.2.2"><a href="#rfc.section.1.2.2">1.2.2</a>&nbsp;<a id="basic.rules" href="#basic.rules">Basic Rules</a></h3>
    822       <div id="rule.LWS">
    823          <p id="rfc.section.1.2.2.p.1">This specification uses three rules to denote the use of linear whitespace: OWS (optional whitespace), RWS (required whitespace),
    824             and BWS ("bad" whitespace).
    825          </p>
    826       </div>
    827       <div id="rule.OWS">
    828          <p id="rfc.section.1.2.2.p.2">The OWS rule is used where zero or more linear whitespace octets might appear. OWS <em class="bcp14">SHOULD</em> either not be produced or be produced as a single SP. Multiple OWS octets that occur within field-content <em class="bcp14">SHOULD</em> either be replaced with a single SP or transformed to all SP octets (each WSP octet other than SP replaced with SP) before
    829             interpreting the field value or forwarding the message downstream.
    830          </p>
    831       </div>
    832       <div id="rule.RWS">
    833          <p id="rfc.section.1.2.2.p.3">RWS is used when at least one linear whitespace octet is required to separate field tokens. RWS <em class="bcp14">SHOULD</em> be produced as a single SP. Multiple RWS octets octets that occur within field-content <em class="bcp14">SHOULD</em> either be replaced with a single SP or transformed to all SP octets (each WSP octet other than SP replaced with SP) before
    834             interpreting the field value or forwarding the message downstream.
    835          </p>
    836       </div>
    837       <div id="rule.BWS">
    838          <p id="rfc.section.1.2.2.p.4">BWS is used where the grammar allows optional whitespace for historical reasons but senders <em class="bcp14">SHOULD NOT</em> produce it in messages. HTTP/1.1 recipients <em class="bcp14">MUST</em> accept such bad optional whitespace and remove it before interpreting the field value or forwarding the message downstream.
    839          </p>
    840       </div>
    841       <div id="rule.whitespace">
    842          <p id="rfc.section.1.2.2.p.5">        </p>
    843       </div>
    844       <div id="rfc.figure.u.8"></div><pre class="inline"><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span>  <a href="#rule.whitespace" class="smpl">OWS</a>            = *( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> )
     818</pre><p id="rfc.section.1.2.1.p.15"><a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;B</a> shows the collected ABNF, with the list rules expanded as explained above.
     819               </p>
     820            </div>
     821            <div id="basic.rules">
     822               <h3 id="rfc.section.1.2.2"><a href="#rfc.section.1.2.2">1.2.2</a>&nbsp;<a href="#basic.rules">Basic Rules</a></h3>
     823               <div id="rule.LWS">
     824                  <p id="rfc.section.1.2.2.p.1">This specification uses three rules to denote the use of linear whitespace: OWS (optional whitespace), RWS (required whitespace),
     825                     and BWS ("bad" whitespace).
     826                  </p>
     827               </div>
     828               <div id="rule.OWS">
     829                  <p id="rfc.section.1.2.2.p.2">The OWS rule is used where zero or more linear whitespace octets might appear. OWS <em class="bcp14">SHOULD</em> either not be produced or be produced as a single SP. Multiple OWS octets that occur within field-content <em class="bcp14">SHOULD</em> either be replaced with a single SP or transformed to all SP octets (each WSP octet other than SP replaced with SP) before
     830                     interpreting the field value or forwarding the message downstream.
     831                  </p>
     832               </div>
     833               <div id="rule.RWS">
     834                  <p id="rfc.section.1.2.2.p.3">RWS is used when at least one linear whitespace octet is required to separate field tokens. RWS <em class="bcp14">SHOULD</em> be produced as a single SP. Multiple RWS octets octets that occur within field-content <em class="bcp14">SHOULD</em> either be replaced with a single SP or transformed to all SP octets (each WSP octet other than SP replaced with SP) before
     835                     interpreting the field value or forwarding the message downstream.
     836                  </p>
     837               </div>
     838               <div id="rule.BWS">
     839                  <p id="rfc.section.1.2.2.p.4">BWS is used where the grammar allows optional whitespace for historical reasons but senders <em class="bcp14">SHOULD NOT</em> produce it in messages. HTTP/1.1 recipients <em class="bcp14">MUST</em> accept such bad optional whitespace and remove it before interpreting the field value or forwarding the message downstream.
     840                  </p>
     841               </div>
     842               <div id="rule.whitespace">
     843                  <p id="rfc.section.1.2.2.p.5">    </p>
     844               </div>
     845               <div id="rfc.figure.u.8"></div><pre class="inline"><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span>  <a href="#rule.whitespace" class="smpl">OWS</a>            = *( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> )
    845846                 ; "optional" whitespace
    846847  <a href="#rule.whitespace" class="smpl">RWS</a>            = 1*( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> )
     
    850851  <a href="#rule.whitespace" class="smpl">obs-fold</a>       = <a href="#core.rules" class="smpl">CRLF</a>
    851852                 ; see <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>
    852 </pre><h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="architecture" href="#architecture">HTTP-related architecture</a></h1>
    853       <p id="rfc.section.2.p.1">HTTP was created for the World Wide Web architecture and has evolved over time to support the scalability needs of a worldwide
    854          hypertext system. Much of that architecture is reflected in the terminology and syntax productions used to define HTTP.
    855       </p>
    856       <div id="rfc.iref.c.1"></div>
    857       <div id="rfc.iref.s.1"></div>
    858       <div id="rfc.iref.c.2"></div>
    859       <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;<a id="operation" href="#operation">Client/Server Messaging</a></h2>
    860       <p id="rfc.section.2.1.p.1">HTTP is a stateless request/response protocol that operates by exchanging messages across a reliable transport or session-layer
    861          "<dfn>connection</dfn>". An HTTP "<dfn>client</dfn>" is a program that establishes a connection to a server for the purpose of sending one or more HTTP requests. An HTTP "<dfn>server</dfn>" is a program that accepts connections in order to service HTTP requests by sending HTTP responses.
    862       </p>
    863       <div id="rfc.iref.u.1"></div>
    864       <div id="rfc.iref.o.1"></div>
    865       <div id="rfc.iref.b.1"></div>
    866       <div id="rfc.iref.s.2"></div>
    867       <div id="rfc.iref.s.3"></div>
    868       <div id="rfc.iref.r.1"></div>
    869       <p id="rfc.section.2.1.p.2">Note that the terms client and server refer only to the roles that these programs perform for a particular connection. The
    870          same program might act as a client on some connections and a server on others. We use the term "<dfn>user agent</dfn>" to refer to the program that initiates a request, such as a WWW browser, editor, or spider (web-traversing robot), and the
    871          term "<dfn>origin server</dfn>" to refer to the program that can originate authoritative responses to a request. For general requirements, we use the term
    872          "<dfn>sender</dfn>" to refer to whichever component sent a given message and the term "<dfn>recipient</dfn>" to refer to any component that receives the message.
    873       </p>
    874       <p id="rfc.section.2.1.p.3">Most HTTP communication consists of a retrieval request (GET) for a representation of some resource identified by a URI. In
    875          the simplest case, this might be accomplished via a single bidirectional connection (===) between the user agent (UA) and
    876          the origin server (O).
    877       </p>
    878       <div id="rfc.figure.u.9"></div><pre class="drawing">         request   &gt;
     853</pre></div>
     854         </div>
     855      </div>
     856      <div id="architecture">
     857         <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a href="#architecture">HTTP-related architecture</a></h1>
     858         <p id="rfc.section.2.p.1">HTTP was created for the World Wide Web architecture and has evolved over time to support the scalability needs of a worldwide
     859            hypertext system. Much of that architecture is reflected in the terminology and syntax productions used to define HTTP.
     860         </p>
     861         <div id="operation">
     862            <div id="rfc.iref.c.1"></div>
     863            <div id="rfc.iref.s.1"></div>
     864            <div id="rfc.iref.c.2"></div>
     865            <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;<a href="#operation">Client/Server Messaging</a></h2>
     866            <p id="rfc.section.2.1.p.1">HTTP is a stateless request/response protocol that operates by exchanging messages across a reliable transport or session-layer
     867               "<dfn>connection</dfn>". An HTTP "<dfn>client</dfn>" is a program that establishes a connection to a server for the purpose of sending one or more HTTP requests. An HTTP "<dfn>server</dfn>" is a program that accepts connections in order to service HTTP requests by sending HTTP responses.
     868            </p>
     869            <div id="rfc.iref.u.1"></div>
     870            <div id="rfc.iref.o.1"></div>
     871            <div id="rfc.iref.b.1"></div>
     872            <div id="rfc.iref.s.2"></div>
     873            <div id="rfc.iref.s.3"></div>
     874            <div id="rfc.iref.r.1"></div>
     875            <p id="rfc.section.2.1.p.2">Note that the terms client and server refer only to the roles that these programs perform for a particular connection. The
     876               same program might act as a client on some connections and a server on others. We use the term "<dfn>user agent</dfn>" to refer to the program that initiates a request, such as a WWW browser, editor, or spider (web-traversing robot), and the
     877               term "<dfn>origin server</dfn>" to refer to the program that can originate authoritative responses to a request. For general requirements, we use the term
     878               "<dfn>sender</dfn>" to refer to whichever component sent a given message and the term "<dfn>recipient</dfn>" to refer to any component that receives the message.
     879            </p>
     880            <p id="rfc.section.2.1.p.3">Most HTTP communication consists of a retrieval request (GET) for a representation of some resource identified by a URI. In
     881               the simplest case, this might be accomplished via a single bidirectional connection (===) between the user agent (UA) and
     882               the origin server (O).
     883            </p>
     884            <div id="rfc.figure.u.9"></div><pre class="drawing">         request   &gt;
    879885    UA ======================================= O
    880886                                &lt;   response
    881887</pre><div id="rfc.iref.m.1"></div>
    882       <div id="rfc.iref.r.2"></div>
    883       <div id="rfc.iref.r.3"></div>
    884       <p id="rfc.section.2.1.p.5">A client sends an HTTP request to the server in the form of a <dfn>request</dfn> <dfn>message</dfn> (<a href="#request" title="Request">Section&nbsp;4</a>), beginning with a method, URI, and protocol version, followed by MIME-like header fields containing request modifiers, client
    885          information, and payload metadata, an empty line to indicate the end of the header section, and finally the payload body (if
    886          any).
    887       </p>
    888       <p id="rfc.section.2.1.p.6">A server responds to the client's request by sending an HTTP <dfn>response</dfn> <dfn>message</dfn> (<a href="#response" title="Response">Section&nbsp;5</a>), beginning with a status line that includes the protocol version, a success or error code, and textual reason phrase, followed
    889          by MIME-like header fields containing server information, resource metadata, and payload metadata, an empty line to indicate
    890          the end of the header section, and finally the payload body (if any).
    891       </p>
    892       <p id="rfc.section.2.1.p.7">The following example illustrates a typical message exchange for a GET request on the URI "http://www.example.com/hello.txt":</p>
    893       <div id="rfc.figure.u.10"></div>
    894       <p>client request:</p><pre class="text2">GET /hello.txt HTTP/1.1
     888            <div id="rfc.iref.r.2"></div>
     889            <div id="rfc.iref.r.3"></div>
     890            <p id="rfc.section.2.1.p.5">A client sends an HTTP request to the server in the form of a <dfn>request</dfn> <dfn>message</dfn> (<a href="#request" title="Request">Section&nbsp;4</a>), beginning with a method, URI, and protocol version, followed by MIME-like header fields containing request modifiers, client
     891               information, and payload metadata, an empty line to indicate the end of the header section, and finally the payload body (if
     892               any).
     893            </p>
     894            <p id="rfc.section.2.1.p.6">A server responds to the client's request by sending an HTTP <dfn>response</dfn> <dfn>message</dfn> (<a href="#response" title="Response">Section&nbsp;5</a>), beginning with a status line that includes the protocol version, a success or error code, and textual reason phrase, followed
     895               by MIME-like header fields containing server information, resource metadata, and payload metadata, an empty line to indicate
     896               the end of the header section, and finally the payload body (if any).
     897            </p>
     898            <p id="rfc.section.2.1.p.7">The following example illustrates a typical message exchange for a GET request on the URI "http://www.example.com/hello.txt":</p>
     899            <div id="rfc.figure.u.10"></div>
     900            <p>client request:</p><pre class="text2">GET /hello.txt HTTP/1.1
    895901User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    896902Host: www.example.com
     
    898904
    899905</pre><div id="rfc.figure.u.11"></div>
    900       <p>server response:</p><pre class="text">HTTP/1.1 200 OK
     906            <p>server response:</p><pre class="text">HTTP/1.1 200 OK
    901907Date: Mon, 27 Jul 2009 12:28:53 GMT
    902908Server: Apache
     
    909915
    910916<span id="exbody">Hello World!
    911 </span></pre><h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;<a id="message-orientation-and-buffering" href="#message-orientation-and-buffering">Message Orientation and Buffering</a></h2>
    912       <p id="rfc.section.2.2.p.1">Fundamentally, HTTP is a message-based protocol. Although message bodies can be chunked (<a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>) and implementations often make parts of a message available progressively, this is not required, and some widely-used implementations
    913          only make a message available when it is complete. Furthermore, while most proxies will progressively stream messages, some
    914          amount of buffering will take place, and some proxies might buffer messages to perform transformations, check content or provide
    915          other services.
    916       </p>
    917       <p id="rfc.section.2.2.p.2">Therefore, extensions to and uses of HTTP cannot rely on the availability of a partial message, or assume that messages will
    918          not be buffered. There are strategies that can be used to test for buffering in a given connection, but it should be understood
    919          that behaviors can differ across connections, and between requests and responses.
    920       </p>
    921       <p id="rfc.section.2.2.p.3">Recipients <em class="bcp14">MUST</em> consider every message in a connection in isolation; because HTTP is a stateless protocol, it cannot be assumed that two requests
    922          on the same connection are from the same client or share any other common attributes. In particular, intermediaries might
    923          mix requests from different clients into a single server connection. Note that some existing HTTP extensions (e.g., <a href="#RFC4559" id="rfc.xref.RFC4559.1"><cite title="SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows">[RFC4559]</cite></a>) violate this requirement, thereby potentially causing interoperability and security problems.
    924       </p>
    925       <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;<a id="transport-independence" href="#transport-independence">Connections and Transport Independence</a></h2>
    926       <p id="rfc.section.2.3.p.1">HTTP messaging is independent of the underlying transport or session-layer connection protocol(s). HTTP only presumes a reliable
    927          transport with in-order delivery of requests and the corresponding in-order delivery of responses. The mapping of HTTP request
    928          and response structures onto the data units of the underlying transport protocol is outside the scope of this specification.
    929       </p>
    930       <p id="rfc.section.2.3.p.2">The specific connection protocols to be used for an interaction are determined by client configuration and the target resource's
    931          URI. For example, the "http" URI scheme (<a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>) indicates a default connection of TCP over IP, with a default TCP port of 80, but the client might be configured to use
    932          a proxy via some other connection port or protocol instead of using the defaults.
    933       </p>
    934       <p id="rfc.section.2.3.p.3">A connection might be used for multiple HTTP request/response exchanges, as defined in <a href="#persistent.connections" title="Persistent Connections">Section&nbsp;7.1</a>.
    935       </p>
    936       <div id="rfc.iref.i.1"></div>
    937       <h2 id="rfc.section.2.4"><a href="#rfc.section.2.4">2.4</a>&nbsp;<a id="intermediaries" href="#intermediaries">Intermediaries</a></h2>
    938       <p id="rfc.section.2.4.p.1">HTTP enables the use of intermediaries to satisfy requests through a chain of connections. There are three common forms of
    939          HTTP <dfn>intermediary</dfn>: proxy, gateway, and tunnel. In some cases, a single intermediary might act as an origin server, proxy, gateway, or tunnel,
    940          switching behavior based on the nature of each request.
    941       </p>
    942       <div id="rfc.figure.u.12"></div><pre class="drawing">         &gt;             &gt;             &gt;             &gt;
     917</span></pre></div>
     918         <div id="message-orientation-and-buffering">
     919            <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;<a href="#message-orientation-and-buffering">Message Orientation and Buffering</a></h2>
     920            <p id="rfc.section.2.2.p.1">Fundamentally, HTTP is a message-based protocol. Although message bodies can be chunked (<a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>) and implementations often make parts of a message available progressively, this is not required, and some widely-used implementations
     921               only make a message available when it is complete. Furthermore, while most proxies will progressively stream messages, some
     922               amount of buffering will take place, and some proxies might buffer messages to perform transformations, check content or provide
     923               other services.
     924            </p>
     925            <p id="rfc.section.2.2.p.2">Therefore, extensions to and uses of HTTP cannot rely on the availability of a partial message, or assume that messages will
     926               not be buffered. There are strategies that can be used to test for buffering in a given connection, but it should be understood
     927               that behaviors can differ across connections, and between requests and responses.
     928            </p>
     929            <p id="rfc.section.2.2.p.3">Recipients <em class="bcp14">MUST</em> consider every message in a connection in isolation; because HTTP is a stateless protocol, it cannot be assumed that two requests
     930               on the same connection are from the same client or share any other common attributes. In particular, intermediaries might
     931               mix requests from different clients into a single server connection. Note that some existing HTTP extensions (e.g., <a href="#RFC4559" id="rfc.xref.RFC4559.1"><cite title="SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows">[RFC4559]</cite></a>) violate this requirement, thereby potentially causing interoperability and security problems.
     932            </p>
     933         </div>
     934         <div id="transport-independence">
     935            <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;<a href="#transport-independence">Connections and Transport Independence</a></h2>
     936            <p id="rfc.section.2.3.p.1">HTTP messaging is independent of the underlying transport or session-layer connection protocol(s). HTTP only presumes a reliable
     937               transport with in-order delivery of requests and the corresponding in-order delivery of responses. The mapping of HTTP request
     938               and response structures onto the data units of the underlying transport protocol is outside the scope of this specification.
     939            </p>
     940            <p id="rfc.section.2.3.p.2">The specific connection protocols to be used for an interaction are determined by client configuration and the target resource's
     941               URI. For example, the "http" URI scheme (<a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>) indicates a default connection of TCP over IP, with a default TCP port of 80, but the client might be configured to use
     942               a proxy via some other connection port or protocol instead of using the defaults.
     943            </p>
     944            <p id="rfc.section.2.3.p.3">A connection might be used for multiple HTTP request/response exchanges, as defined in <a href="#persistent.connections" title="Persistent Connections">Section&nbsp;7.1</a>.
     945            </p>
     946         </div>
     947         <div id="intermediaries">
     948            <div id="rfc.iref.i.1"></div>
     949            <h2 id="rfc.section.2.4"><a href="#rfc.section.2.4">2.4</a>&nbsp;<a href="#intermediaries">Intermediaries</a></h2>
     950            <p id="rfc.section.2.4.p.1">HTTP enables the use of intermediaries to satisfy requests through a chain of connections. There are three common forms of
     951               HTTP <dfn>intermediary</dfn>: proxy, gateway, and tunnel. In some cases, a single intermediary might act as an origin server, proxy, gateway, or tunnel,
     952               switching behavior based on the nature of each request.
     953            </p>
     954            <div id="rfc.figure.u.12"></div><pre class="drawing">         &gt;             &gt;             &gt;             &gt;
    943955    <b>UA</b> =========== <b>A</b> =========== <b>B</b> =========== <b>C</b> =========== <b>O</b>
    944956               &lt;             &lt;             &lt;             &lt;
    945957</pre><p id="rfc.section.2.4.p.3">The figure above shows three intermediaries (A, B, and C) between the user agent and origin server. A request or response
    946          message that travels the whole chain will pass through four separate connections. Some HTTP communication options might apply
    947          only to the connection with the nearest, non-tunnel neighbor, only to the end-points of the chain, or to all connections along
    948          the chain. Although the diagram is linear, each participant might be engaged in multiple, simultaneous communications. For
    949          example, B might be receiving requests from many clients other than A, and/or forwarding requests to servers other than C,
    950          at the same time that it is handling A's request.
    951       </p>
    952       <p id="rfc.section.2.4.p.4"> <span id="rfc.iref.u.2"></span><span id="rfc.iref.d.1"></span>  <span id="rfc.iref.i.2"></span><span id="rfc.iref.o.2"></span> We use the terms "<dfn>upstream</dfn>" and "<dfn>downstream</dfn>" to describe various requirements in relation to the directional flow of a message: all messages flow from upstream to downstream.
    953          Likewise, we use the terms inbound and outbound to refer to directions in relation to the request path: "<dfn>inbound</dfn>" means toward the origin server and "<dfn>outbound</dfn>" means toward the user agent.
    954       </p>
    955       <p id="rfc.section.2.4.p.5"><span id="rfc.iref.p.1"></span> A "<dfn>proxy</dfn>" is a message forwarding agent that is selected by the client, usually via local configuration rules, to receive requests
    956          for some type(s) of absolute URI and attempt to satisfy those requests via translation through the HTTP interface. Some translations
    957          are minimal, such as for proxy requests for "http" URIs, whereas other requests might require translation to and from entirely
    958          different application-layer protocols. Proxies are often used to group an organization's HTTP requests through a common intermediary
    959          for the sake of security, annotation services, or shared caching.
    960       </p>
    961       <p id="rfc.section.2.4.p.6"> <span id="rfc.iref.t.1"></span>  <span id="rfc.iref.n.1"></span> An HTTP-to-HTTP proxy is called a "<dfn>transforming proxy</dfn>" if it is designed or configured to modify request or response messages in a semantically meaningful way (i.e., modifications,
    962          beyond those required by normal HTTP processing, that change the message in a way that would be significant to the original
    963          sender or potentially significant to downstream recipients). For example, a transforming proxy might be acting as a shared
    964          annotation server (modifying responses to include references to a local annotation database), a malware filter, a format transcoder,
    965          or an intranet-to-Internet privacy filter. Such transformations are presumed to be desired by the client (or client organization)
    966          that selected the proxy and are beyond the scope of this specification. However, when a proxy is not intended to transform
    967          a given message, we use the term "<dfn>non-transforming proxy</dfn>" to target requirements that preserve HTTP message semantics. See <a href="p2-semantics.html#status.203" title="203 Non-Authoritative Information">Section 8.2.4</a> of <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a> and <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a> for status and warning codes related to transformations.
    968       </p>
    969       <p id="rfc.section.2.4.p.7"><span id="rfc.iref.g.16"></span><span id="rfc.iref.r.4"></span>  <span id="rfc.iref.a.1"></span> A "<dfn>gateway</dfn>" (a.k.a., "<dfn>reverse proxy</dfn>") is a receiving agent that acts as a layer above some other server(s) and translates the received requests to the underlying
    970          server's protocol. Gateways are often used to encapsulate legacy or untrusted information services, to improve server performance
    971          through "<dfn>accelerator</dfn>" caching, and to enable partitioning or load-balancing of HTTP services across multiple machines.
    972       </p>
    973       <p id="rfc.section.2.4.p.8">A gateway behaves as an origin server on its outbound connection and as a user agent on its inbound connection. All HTTP requirements
    974          applicable to an origin server also apply to the outbound communication of a gateway. A gateway communicates with inbound
    975          servers using any protocol that it desires, including private extensions to HTTP that are outside the scope of this specification.
    976          However, an HTTP-to-HTTP gateway that wishes to interoperate with third-party HTTP servers <em class="bcp14">MUST</em> comply with HTTP user agent requirements on the gateway's inbound connection and <em class="bcp14">MUST</em> implement the Connection (<a href="#header.connection" id="rfc.xref.header.connection.1" title="Connection">Section&nbsp;9.1</a>) and Via (<a href="#header.via" id="rfc.xref.header.via.1" title="Via">Section&nbsp;9.9</a>) header fields for both connections.
    977       </p>
    978       <p id="rfc.section.2.4.p.9"><span id="rfc.iref.t.2"></span> A "<dfn>tunnel</dfn>" acts as a blind relay between two connections without changing the messages. Once active, a tunnel is not considered a party
    979          to the HTTP communication, though the tunnel might have been initiated by an HTTP request. A tunnel ceases to exist when both
    980          ends of the relayed connection are closed. Tunnels are used to extend a virtual connection through an intermediary, such as
    981          when transport-layer security is used to establish private communication through a shared firewall proxy.
    982       </p>
    983       <p id="rfc.section.2.4.p.10"><span id="rfc.iref.i.3"></span><span id="rfc.iref.t.3"></span>  <span id="rfc.iref.c.3"></span> In addition, there may exist network intermediaries that are not considered part of the HTTP communication but nevertheless
    984          act as filters or redirecting agents (usually violating HTTP semantics, causing security problems, and otherwise making a
    985          mess of things). Such a network intermediary, often referred to as an "<dfn>interception proxy</dfn>" <a href="#RFC3040" id="rfc.xref.RFC3040.1"><cite title="Internet Web Replication and Caching Taxonomy">[RFC3040]</cite></a>, "<dfn>transparent proxy</dfn>" <a href="#RFC1919" id="rfc.xref.RFC1919.1"><cite title="Classical versus Transparent IP Proxies">[RFC1919]</cite></a>, or "<dfn>captive portal</dfn>", differs from an HTTP proxy because it has not been selected by the client. Instead, the network intermediary redirects
    986          outgoing TCP port 80 packets (and occasionally other common port traffic) to an internal HTTP server. Interception proxies
    987          are commonly found on public network access points, as a means of enforcing account subscription prior to allowing use of
    988          non-local Internet services, and within corporate firewalls to enforce network usage policies. They are indistinguishable
    989          from a man-in-the-middle attack.
    990       </p>
    991       <div id="rfc.iref.c.4"></div>
    992       <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;<a id="caches" href="#caches">Caches</a></h2>
    993       <p id="rfc.section.2.5.p.1">A "<dfn>cache</dfn>" is a local store of previous response messages and the subsystem that controls its message storage, retrieval, and deletion.
    994          A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent
    995          requests. Any client or server <em class="bcp14">MAY</em> employ a cache, though a cache cannot be used by a server while it is acting as a tunnel.
    996       </p>
    997       <p id="rfc.section.2.5.p.2">The effect of a cache is that the request/response chain is shortened if one of the participants along the chain has a cached
    998          response applicable to that request. The following illustrates the resulting chain if B has a cached copy of an earlier response
    999          from O (via C) for a request which has not been cached by UA or A.
    1000       </p>
    1001       <div id="rfc.figure.u.13"></div><pre class="drawing">            &gt;             &gt;
     958               message that travels the whole chain will pass through four separate connections. Some HTTP communication options might apply
     959               only to the connection with the nearest, non-tunnel neighbor, only to the end-points of the chain, or to all connections along
     960               the chain. Although the diagram is linear, each participant might be engaged in multiple, simultaneous communications. For
     961               example, B might be receiving requests from many clients other than A, and/or forwarding requests to servers other than C,
     962               at the same time that it is handling A's request.
     963            </p>
     964            <p id="rfc.section.2.4.p.4"><span id="rfc.iref.u.2"></span><span id="rfc.iref.d.1"></span> <span id="rfc.iref.i.2"></span><span id="rfc.iref.o.2"></span> We use the terms "<dfn>upstream</dfn>" and "<dfn>downstream</dfn>" to describe various requirements in relation to the directional flow of a message: all messages flow from upstream to downstream.
     965               Likewise, we use the terms inbound and outbound to refer to directions in relation to the request path: "<dfn>inbound</dfn>" means toward the origin server and "<dfn>outbound</dfn>" means toward the user agent.
     966            </p>
     967            <p id="rfc.section.2.4.p.5"><span id="rfc.iref.p.1"></span> A "<dfn>proxy</dfn>" is a message forwarding agent that is selected by the client, usually via local configuration rules, to receive requests
     968               for some type(s) of absolute URI and attempt to satisfy those requests via translation through the HTTP interface. Some translations
     969               are minimal, such as for proxy requests for "http" URIs, whereas other requests might require translation to and from entirely
     970               different application-layer protocols. Proxies are often used to group an organization's HTTP requests through a common intermediary
     971               for the sake of security, annotation services, or shared caching.
     972            </p>
     973            <p id="rfc.section.2.4.p.6"><span id="rfc.iref.t.1"></span> <span id="rfc.iref.n.1"></span> An HTTP-to-HTTP proxy is called a "<dfn>transforming proxy</dfn>" if it is designed or configured to modify request or response messages in a semantically meaningful way (i.e., modifications,
     974               beyond those required by normal HTTP processing, that change the message in a way that would be significant to the original
     975               sender or potentially significant to downstream recipients). For example, a transforming proxy might be acting as a shared
     976               annotation server (modifying responses to include references to a local annotation database), a malware filter, a format transcoder,
     977               or an intranet-to-Internet privacy filter. Such transformations are presumed to be desired by the client (or client organization)
     978               that selected the proxy and are beyond the scope of this specification. However, when a proxy is not intended to transform
     979               a given message, we use the term "<dfn>non-transforming proxy</dfn>" to target requirements that preserve HTTP message semantics. See <a href="p2-semantics.html#status.203" title="203 Non-Authoritative Information">Section 8.2.4</a> of <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a> and <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a> for status and warning codes related to transformations.
     980            </p>
     981            <p id="rfc.section.2.4.p.7"><span id="rfc.iref.g.16"></span><span id="rfc.iref.r.4"></span> <span id="rfc.iref.a.1"></span> A "<dfn>gateway</dfn>" (a.k.a., "<dfn>reverse proxy</dfn>") is a receiving agent that acts as a layer above some other server(s) and translates the received requests to the underlying
     982               server's protocol. Gateways are often used to encapsulate legacy or untrusted information services, to improve server performance
     983               through "<dfn>accelerator</dfn>" caching, and to enable partitioning or load-balancing of HTTP services across multiple machines.
     984            </p>
     985            <p id="rfc.section.2.4.p.8">A gateway behaves as an origin server on its outbound connection and as a user agent on its inbound connection. All HTTP requirements
     986               applicable to an origin server also apply to the outbound communication of a gateway. A gateway communicates with inbound
     987               servers using any protocol that it desires, including private extensions to HTTP that are outside the scope of this specification.
     988               However, an HTTP-to-HTTP gateway that wishes to interoperate with third-party HTTP servers <em class="bcp14">MUST</em> comply with HTTP user agent requirements on the gateway's inbound connection and <em class="bcp14">MUST</em> implement the Connection (<a href="#header.connection" id="rfc.xref.header.connection.1" title="Connection">Section&nbsp;9.1</a>) and Via (<a href="#header.via" id="rfc.xref.header.via.1" title="Via">Section&nbsp;9.9</a>) header fields for both connections.
     989            </p>
     990            <p id="rfc.section.2.4.p.9"><span id="rfc.iref.t.2"></span> A "<dfn>tunnel</dfn>" acts as a blind relay between two connections without changing the messages. Once active, a tunnel is not considered a party
     991               to the HTTP communication, though the tunnel might have been initiated by an HTTP request. A tunnel ceases to exist when both
     992               ends of the relayed connection are closed. Tunnels are used to extend a virtual connection through an intermediary, such as
     993               when transport-layer security is used to establish private communication through a shared firewall proxy.
     994            </p>
     995            <p id="rfc.section.2.4.p.10"><span id="rfc.iref.i.3"></span><span id="rfc.iref.t.3"></span> <span id="rfc.iref.c.3"></span> In addition, there may exist network intermediaries that are not considered part of the HTTP communication but nevertheless
     996               act as filters or redirecting agents (usually violating HTTP semantics, causing security problems, and otherwise making a
     997               mess of things). Such a network intermediary, often referred to as an "<dfn>interception proxy</dfn>" <a href="#RFC3040" id="rfc.xref.RFC3040.1"><cite title="Internet Web Replication and Caching Taxonomy">[RFC3040]</cite></a>, "<dfn>transparent proxy</dfn>" <a href="#RFC1919" id="rfc.xref.RFC1919.1"><cite title="Classical versus Transparent IP Proxies">[RFC1919]</cite></a>, or "<dfn>captive portal</dfn>", differs from an HTTP proxy because it has not been selected by the client. Instead, the network intermediary redirects
     998               outgoing TCP port 80 packets (and occasionally other common port traffic) to an internal HTTP server. Interception proxies
     999               are commonly found on public network access points, as a means of enforcing account subscription prior to allowing use of
     1000               non-local Internet services, and within corporate firewalls to enforce network usage policies. They are indistinguishable
     1001               from a man-in-the-middle attack.
     1002            </p>
     1003         </div>
     1004         <div id="caches">
     1005            <div id="rfc.iref.c.4"></div>
     1006            <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;<a href="#caches">Caches</a></h2>
     1007            <p id="rfc.section.2.5.p.1">A "<dfn>cache</dfn>" is a local store of previous response messages and the subsystem that controls its message storage, retrieval, and deletion.
     1008               A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent
     1009               requests. Any client or server <em class="bcp14">MAY</em> employ a cache, though a cache cannot be used by a server while it is acting as a tunnel.
     1010            </p>
     1011            <p id="rfc.section.2.5.p.2">The effect of a cache is that the request/response chain is shortened if one of the participants along the chain has a cached
     1012               response applicable to that request. The following illustrates the resulting chain if B has a cached copy of an earlier response
     1013               from O (via C) for a request which has not been cached by UA or A.
     1014            </p>
     1015            <div id="rfc.figure.u.13"></div><pre class="drawing">            &gt;             &gt;
    10021016       UA =========== A =========== B - - - - - - C - - - - - - O
    10031017                  &lt;             &lt;
    10041018</pre><p id="rfc.section.2.5.p.4"><span id="rfc.iref.c.5"></span> A response is "<dfn>cacheable</dfn>" if a cache is allowed to store a copy of the response message for use in answering subsequent requests. Even when a response
    1005          is cacheable, there might be additional constraints placed by the client or by the origin server on when that cached response
    1006          can be used for a particular request. HTTP requirements for cache behavior and cacheable responses are defined in <a href="p6-cache.html#caching.overview" title="Cache Operation">Section 2</a> of <a href="#Part6" id="rfc.xref.Part6.2"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
    1007       </p>
    1008       <p id="rfc.section.2.5.p.5">There are a wide variety of architectures and configurations of caches and proxies deployed across the World Wide Web and
    1009          inside large organizations. These systems include national hierarchies of proxy caches to save transoceanic bandwidth, systems
    1010          that broadcast or multicast cache entries, organizations that distribute subsets of cached data via optical media, and so
    1011          on.
    1012       </p>
    1013       <h2 id="rfc.section.2.6"><a href="#rfc.section.2.6">2.6</a>&nbsp;<a id="http.version" href="#http.version">Protocol Versioning</a></h2>
    1014       <p id="rfc.section.2.6.p.1">HTTP uses a "&lt;major&gt;.&lt;minor&gt;" numbering scheme to indicate versions of the protocol. This specification defines version "1.1".
    1015          The protocol version as a whole indicates the sender's compliance with the set of requirements laid out in that version's
    1016          corresponding specification of HTTP.
    1017       </p>
    1018       <p id="rfc.section.2.6.p.2">The version of an HTTP message is indicated by an HTTP-Version field in the first line of the message. HTTP-Version is case-sensitive.</p>
    1019       <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#http.version" class="smpl">HTTP-Version</a>   = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" <a href="#core.rules" class="smpl">DIGIT</a> "." <a href="#core.rules" class="smpl">DIGIT</a>
     1019               is cacheable, there might be additional constraints placed by the client or by the origin server on when that cached response
     1020               can be used for a particular request. HTTP requirements for cache behavior and cacheable responses are defined in <a href="p6-cache.html#caching.overview" title="Cache Operation">Section 2</a> of <a href="#Part6" id="rfc.xref.Part6.2"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
     1021            </p>
     1022            <p id="rfc.section.2.5.p.5">There are a wide variety of architectures and configurations of caches and proxies deployed across the World Wide Web and
     1023               inside large organizations. These systems include national hierarchies of proxy caches to save transoceanic bandwidth, systems
     1024               that broadcast or multicast cache entries, organizations that distribute subsets of cached data via optical media, and so
     1025               on.
     1026            </p>
     1027         </div>
     1028         <div id="http.version">
     1029            <h2 id="rfc.section.2.6"><a href="#rfc.section.2.6">2.6</a>&nbsp;<a href="#http.version">Protocol Versioning</a></h2>
     1030            <p id="rfc.section.2.6.p.1">HTTP uses a "&lt;major&gt;.&lt;minor&gt;" numbering scheme to indicate versions of the protocol. This specification defines version "1.1".
     1031               The protocol version as a whole indicates the sender's compliance with the set of requirements laid out in that version's
     1032               corresponding specification of HTTP.
     1033            </p>
     1034            <p id="rfc.section.2.6.p.2">The version of an HTTP message is indicated by an HTTP-Version field in the first line of the message. HTTP-Version is case-sensitive.</p>
     1035            <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#http.version" class="smpl">HTTP-Version</a>   = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" <a href="#core.rules" class="smpl">DIGIT</a> "." <a href="#core.rules" class="smpl">DIGIT</a>
    10201036  <a href="#http.version" class="smpl">HTTP-Prot-Name</a> = %x48.54.54.50 ; "HTTP", case-sensitive
    10211037</pre><p id="rfc.section.2.6.p.4">The HTTP version number consists of two decimal digits separated by a "." (period or decimal point). The first digit ("major
    1022          version") indicates the HTTP messaging syntax, whereas the second digit ("minor version") indicates the highest minor version
    1023          to which the sender is at least conditionally compliant and able to understand for future communication. The minor version
    1024          advertises the sender's communication capabilities even when the sender is only using a backwards-compatible subset of the
    1025          protocol, thereby letting the recipient know that more advanced features can be used in response (by servers) or in future
    1026          requests (by clients).
    1027       </p>
    1028       <p id="rfc.section.2.6.p.5">When an HTTP/1.1 message is sent to an HTTP/1.0 recipient <a href="#RFC1945" id="rfc.xref.RFC1945.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.0">[RFC1945]</cite></a> or a recipient whose version is unknown, the HTTP/1.1 message is constructed such that it can be interpreted as a valid HTTP/1.0
    1029          message if all of the newer features are ignored. This specification places recipient-version requirements on some new features
    1030          so that a compliant sender will only use compatible features until it has determined, through configuration or the receipt
    1031          of a message, that the recipient supports HTTP/1.1.
    1032       </p>
    1033       <p id="rfc.section.2.6.p.6">The interpretation of an HTTP header field does not change between minor versions of the same major version, though the default
    1034          behavior of a recipient in the absence of such a field can change. Unless specified otherwise, header fields defined in HTTP/1.1
    1035          are defined for all versions of HTTP/1.x. In particular, the Host and Connection header fields ought to be implemented by
    1036          all HTTP/1.x implementations whether or not they advertise compliance with HTTP/1.1.
    1037       </p>
    1038       <p id="rfc.section.2.6.p.7">New header fields can be defined such that, when they are understood by a recipient, they might override or enhance the interpretation
    1039          of previously defined header fields. When an implementation receives an unrecognized header field, the recipient <em class="bcp14">MUST</em> ignore that header field for local processing regardless of the message's HTTP version. An unrecognized header field received
    1040          by a proxy <em class="bcp14">MUST</em> be forwarded downstream unless the header field's field-name is listed in the message's Connection header-field (see <a href="#header.connection" id="rfc.xref.header.connection.2" title="Connection">Section&nbsp;9.1</a>). These requirements allow HTTP's functionality to be enhanced without requiring prior update of all compliant intermediaries.
    1041       </p>
    1042       <p id="rfc.section.2.6.p.8">Intermediaries that process HTTP messages (i.e., all intermediaries other than those acting as a tunnel) <em class="bcp14">MUST</em> send their own HTTP-Version in forwarded messages. In other words, they <em class="bcp14">MUST NOT</em> blindly forward the first line of an HTTP message without ensuring that the protocol version matches what the intermediary
    1043          understands, and is at least conditionally compliant to, for both the receiving and sending of messages. Forwarding an HTTP
    1044          message without rewriting the HTTP-Version might result in communication errors when downstream recipients use the message
    1045          sender's version to determine what features are safe to use for later communication with that sender.
    1046       </p>
    1047       <p id="rfc.section.2.6.p.9">An HTTP client <em class="bcp14">SHOULD</em> send a request version equal to the highest version for which the client is at least conditionally compliant and whose major
    1048          version is no higher than the highest version supported by the server, if this is known. An HTTP client <em class="bcp14">MUST NOT</em> send a version for which it is not at least conditionally compliant.
    1049       </p>
    1050       <p id="rfc.section.2.6.p.10">An HTTP client <em class="bcp14">MAY</em> send a lower request version if it is known that the server incorrectly implements the HTTP specification, but only after
    1051          the client has attempted at least one normal request and determined from the response status or header fields (e.g., Server)
    1052          that the server improperly handles higher request versions.
    1053       </p>
    1054       <p id="rfc.section.2.6.p.11">An HTTP server <em class="bcp14">SHOULD</em> send a response version equal to the highest version for which the server is at least conditionally compliant and whose major
    1055          version is less than or equal to the one received in the request. An HTTP server <em class="bcp14">MUST NOT</em> send a version for which it is not at least conditionally compliant. A server <em class="bcp14">MAY</em> send a 505 (HTTP Version Not Supported) response if it cannot send a response using the major version used in the client's
    1056          request.
    1057       </p>
    1058       <p id="rfc.section.2.6.p.12">An HTTP server <em class="bcp14">MAY</em> send an HTTP/1.0 response to an HTTP/1.0 request if it is known or suspected that the client incorrectly implements the HTTP
    1059          specification and is incapable of correctly processing later version responses, such as when a client fails to parse the version
    1060          number correctly or when an intermediary is known to blindly forward the HTTP-Version even when it doesn't comply with the
    1061          given minor version of the protocol. Such protocol downgrades <em class="bcp14">SHOULD NOT</em> be performed unless triggered by specific client attributes, such as when one or more of the request header fields (e.g.,
    1062          User-Agent) uniquely match the values sent by a client known to be in error.
    1063       </p>
    1064       <p id="rfc.section.2.6.p.13">The intention of HTTP's versioning design is that the major number will only be incremented if an incompatible message syntax
    1065          is introduced, and that the minor number will only be incremented when changes made to the protocol have the effect of adding
    1066          to the message semantics or implying additional capabilities of the sender. However, the minor version was not incremented
    1067          for the changes introduced between <a href="#RFC2068" id="rfc.xref.RFC2068.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> and <a href="#RFC2616" id="rfc.xref.RFC2616.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>, and this revision is specifically avoiding any such changes to the protocol.
    1068       </p>
    1069       <div id="rfc.iref.r.5"></div>
    1070       <h2 id="rfc.section.2.7"><a href="#rfc.section.2.7">2.7</a>&nbsp;<a id="uri" href="#uri">Uniform Resource Identifiers</a></h2>
    1071       <p id="rfc.section.2.7.p.1">Uniform Resource Identifiers (URIs) <a href="#RFC3986" id="rfc.xref.RFC3986.2"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a> are used throughout HTTP as the means for identifying resources. URI references are used to target requests, indicate redirects,
    1072          and define relationships. HTTP does not limit what a resource might be; it merely defines an interface that can be used to
    1073          interact with a resource via HTTP. More information on the scope of URIs and resources can be found in <a href="#RFC3986" id="rfc.xref.RFC3986.3"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>.
    1074       </p>
    1075       <p id="rfc.section.2.7.p.2">This specification adopts the definitions of "URI-reference", "absolute-URI", "relative-part", "port", "host", "path-abempty",
    1076          "path-absolute", "query", and "authority" from the URI generic syntax <a href="#RFC3986" id="rfc.xref.RFC3986.4"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>. In addition, we define a partial-URI rule for protocol elements that allow a relative URI but not a fragment.
    1077       </p>
    1078       <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span><span id="rfc.iref.g.21"></span><span id="rfc.iref.g.22"></span><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span><span id="rfc.iref.g.25"></span>  <a href="#uri" class="smpl">URI-reference</a> = &lt;URI-reference, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.5"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.1">Section 4.1</a>&gt;
    1079   <a href="#uri" class="smpl">absolute-URI</a>  = &lt;absolute-URI, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.6"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>&gt;
    1080   <a href="#uri" class="smpl">relative-part</a> = &lt;relative-part, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.7"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.2">Section 4.2</a>&gt;
    1081   <a href="#uri" class="smpl">authority</a>     = &lt;authority, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.8"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2">Section 3.2</a>&gt;
    1082   <a href="#uri" class="smpl">path-abempty</a>  = &lt;path-abempty, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.9"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3</a>&gt;
    1083   <a href="#uri" class="smpl">path-absolute</a> = &lt;path-absolute, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.10"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3</a>&gt;
    1084   <a href="#uri" class="smpl">port</a>          = &lt;port, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.11"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2.3">Section 3.2.3</a>&gt;
    1085   <a href="#uri" class="smpl">query</a>         = &lt;query, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.12"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.4">Section 3.4</a>&gt;
    1086   <a href="#uri" class="smpl">uri-host</a>      = &lt;host, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.13"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2.2">Section 3.2.2</a>&gt;
     1038               version") indicates the HTTP messaging syntax, whereas the second digit ("minor version") indicates the highest minor version
     1039               to which the sender is at least conditionally compliant and able to understand for future communication. The minor version
     1040               advertises the sender's communication capabilities even when the sender is only using a backwards-compatible subset of the
     1041               protocol, thereby letting the recipient know that more advanced features can be used in response (by servers) or in future
     1042               requests (by clients).
     1043            </p>
     1044            <p id="rfc.section.2.6.p.5">When an HTTP/1.1 message is sent to an HTTP/1.0 recipient <a href="#RFC1945" id="rfc.xref.RFC1945.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.0">[RFC1945]</cite></a> or a recipient whose version is unknown, the HTTP/1.1 message is constructed such that it can be interpreted as a valid HTTP/1.0
     1045               message if all of the newer features are ignored. This specification places recipient-version requirements on some new features
     1046               so that a compliant sender will only use compatible features until it has determined, through configuration or the receipt
     1047               of a message, that the recipient supports HTTP/1.1.
     1048            </p>
     1049            <p id="rfc.section.2.6.p.6">The interpretation of an HTTP header field does not change between minor versions of the same major version, though the default
     1050               behavior of a recipient in the absence of such a field can change. Unless specified otherwise, header fields defined in HTTP/1.1
     1051               are defined for all versions of HTTP/1.x. In particular, the Host and Connection header fields ought to be implemented by
     1052               all HTTP/1.x implementations whether or not they advertise compliance with HTTP/1.1.
     1053            </p>
     1054            <p id="rfc.section.2.6.p.7">New header fields can be defined such that, when they are understood by a recipient, they might override or enhance the interpretation
     1055               of previously defined header fields. When an implementation receives an unrecognized header field, the recipient <em class="bcp14">MUST</em> ignore that header field for local processing regardless of the message's HTTP version. An unrecognized header field received
     1056               by a proxy <em class="bcp14">MUST</em> be forwarded downstream unless the header field's field-name is listed in the message's Connection header-field (see <a href="#header.connection" id="rfc.xref.header.connection.2" title="Connection">Section&nbsp;9.1</a>). These requirements allow HTTP's functionality to be enhanced without requiring prior update of all compliant intermediaries.
     1057            </p>
     1058            <p id="rfc.section.2.6.p.8">Intermediaries that process HTTP messages (i.e., all intermediaries other than those acting as a tunnel) <em class="bcp14">MUST</em> send their own HTTP-Version in forwarded messages. In other words, they <em class="bcp14">MUST NOT</em> blindly forward the first line of an HTTP message without ensuring that the protocol version matches what the intermediary
     1059               understands, and is at least conditionally compliant to, for both the receiving and sending of messages. Forwarding an HTTP
     1060               message without rewriting the HTTP-Version might result in communication errors when downstream recipients use the message
     1061               sender's version to determine what features are safe to use for later communication with that sender.
     1062            </p>
     1063            <p id="rfc.section.2.6.p.9">An HTTP client <em class="bcp14">SHOULD</em> send a request version equal to the highest version for which the client is at least conditionally compliant and whose major
     1064               version is no higher than the highest version supported by the server, if this is known. An HTTP client <em class="bcp14">MUST NOT</em> send a version for which it is not at least conditionally compliant.
     1065            </p>
     1066            <p id="rfc.section.2.6.p.10">An HTTP client <em class="bcp14">MAY</em> send a lower request version if it is known that the server incorrectly implements the HTTP specification, but only after
     1067               the client has attempted at least one normal request and determined from the response status or header fields (e.g., Server)
     1068               that the server improperly handles higher request versions.
     1069            </p>
     1070            <p id="rfc.section.2.6.p.11">An HTTP server <em class="bcp14">SHOULD</em> send a response version equal to the highest version for which the server is at least conditionally compliant and whose major
     1071               version is less than or equal to the one received in the request. An HTTP server <em class="bcp14">MUST NOT</em> send a version for which it is not at least conditionally compliant. A server <em class="bcp14">MAY</em> send a 505 (HTTP Version Not Supported) response if it cannot send a response using the major version used in the client's
     1072               request.
     1073            </p>
     1074            <p id="rfc.section.2.6.p.12">An HTTP server <em class="bcp14">MAY</em> send an HTTP/1.0 response to an HTTP/1.0 request if it is known or suspected that the client incorrectly implements the HTTP
     1075               specification and is incapable of correctly processing later version responses, such as when a client fails to parse the version
     1076               number correctly or when an intermediary is known to blindly forward the HTTP-Version even when it doesn't comply with the
     1077               given minor version of the protocol. Such protocol downgrades <em class="bcp14">SHOULD NOT</em> be performed unless triggered by specific client attributes, such as when one or more of the request header fields (e.g.,
     1078               User-Agent) uniquely match the values sent by a client known to be in error.
     1079            </p>
     1080            <p id="rfc.section.2.6.p.13">The intention of HTTP's versioning design is that the major number will only be incremented if an incompatible message syntax
     1081               is introduced, and that the minor number will only be incremented when changes made to the protocol have the effect of adding
     1082               to the message semantics or implying additional capabilities of the sender. However, the minor version was not incremented
     1083               for the changes introduced between <a href="#RFC2068" id="rfc.xref.RFC2068.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> and <a href="#RFC2616" id="rfc.xref.RFC2616.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>, and this revision is specifically avoiding any such changes to the protocol.
     1084            </p>
     1085         </div>
     1086         <div id="uri">
     1087            <div id="rfc.iref.r.5"></div>
     1088            <h2 id="rfc.section.2.7"><a href="#rfc.section.2.7">2.7</a>&nbsp;<a href="#uri">Uniform Resource Identifiers</a></h2>
     1089            <p id="rfc.section.2.7.p.1">Uniform Resource Identifiers (URIs) <a href="#RFC3986" id="rfc.xref.RFC3986.2"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a> are used throughout HTTP as the means for identifying resources. URI references are used to target requests, indicate redirects,
     1090               and define relationships. HTTP does not limit what a resource might be; it merely defines an interface that can be used to
     1091               interact with a resource via HTTP. More information on the scope of URIs and resources can be found in <a href="#RFC3986" id="rfc.xref.RFC3986.3"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>.
     1092            </p>
     1093            <p id="rfc.section.2.7.p.2">This specification adopts the definitions of "URI-reference", "absolute-URI", "relative-part", "port", "host", "path-abempty",
     1094               "path-absolute", "query", and "authority" from the URI generic syntax <a href="#RFC3986" id="rfc.xref.RFC3986.4"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>. In addition, we define a partial-URI rule for protocol elements that allow a relative URI but not a fragment.
     1095            </p>
     1096            <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span><span id="rfc.iref.g.21"></span><span id="rfc.iref.g.22"></span><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span><span id="rfc.iref.g.25"></span>  <a href="#uri" class="smpl">URI-reference</a> = &lt;URI-reference, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.5"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-4.1">Section 4.1</a>&gt;
     1097  <a href="#uri" class="smpl">absolute-URI</a>  = &lt;absolute-URI, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.6"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>&gt;
     1098  <a href="#uri" class="smpl">relative-part</a> = &lt;relative-part, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.7"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-4.2">Section 4.2</a>&gt;
     1099  <a href="#uri" class="smpl">authority</a>     = &lt;authority, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.8"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.2">Section 3.2</a>&gt;
     1100  <a href="#uri" class="smpl">path-abempty</a>  = &lt;path-abempty, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.9"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3</a>&gt;
     1101  <a href="#uri" class="smpl">path-absolute</a> = &lt;path-absolute, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.10"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3</a>&gt;
     1102  <a href="#uri" class="smpl">port</a>          = &lt;port, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.11"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.2.3">Section 3.2.3</a>&gt;
     1103  <a href="#uri" class="smpl">query</a>         = &lt;query, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.12"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.4">Section 3.4</a>&gt;
     1104  <a href="#uri" class="smpl">uri-host</a>      = &lt;host, defined in <a href="#RFC3986" id="rfc.xref.RFC3986.13"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.2.2">Section 3.2.2</a>&gt;
    10871105 
    10881106  <a href="#uri" class="smpl">partial-URI</a>   = relative-part [ "?" query ]
    10891107</pre><p id="rfc.section.2.7.p.4">Each protocol element in HTTP that allows a URI reference will indicate in its ABNF production whether the element allows
    1090          any form of reference (URI-reference), only a URI in absolute form (absolute-URI), only the path and optional query components,
    1091          or some combination of the above. Unless otherwise indicated, URI references are parsed relative to the effective request
    1092          URI, which defines the default base URI for references in both the request and its corresponding response.
    1093       </p>
    1094       <h3 id="rfc.section.2.7.1"><a href="#rfc.section.2.7.1">2.7.1</a>&nbsp;<a id="http.uri" href="#http.uri">http URI scheme</a></h3>
    1095       <div id="rfc.iref.h.1"></div>
    1096       <div id="rfc.iref.u.3"></div>
    1097       <p id="rfc.section.2.7.1.p.1">The "http" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
    1098          namespace governed by a potential HTTP origin server listening for TCP connections on a given port.
    1099       </p>
    1100       <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.26"></span>  <a href="#http.uri" class="smpl">http-URI</a> = "http:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]
    1101 </pre><p id="rfc.section.2.7.1.p.3">The HTTP origin server is identified by the generic syntax's <a href="#uri" class="smpl">authority</a> component, which includes a host identifier and optional TCP port (<a href="#RFC3986" id="rfc.xref.RFC3986.14"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2.2">Section 3.2.2</a>). The remainder of the URI, consisting of both the hierarchical path component and optional query component, serves as an
    1102          identifier for a potential resource within that origin server's name space.
    1103       </p>
    1104       <p id="rfc.section.2.7.1.p.4">If the host identifier is provided as an IP literal or IPv4 address, then the origin server is any listener on the indicated
    1105          TCP port at that IP address. If host is a registered name, then that name is considered an indirect identifier and the recipient
    1106          might use a name resolution service, such as DNS, to find the address of a listener for that host. The host <em class="bcp14">MUST NOT</em> be empty; if an "http" URI is received with an empty host, then it <em class="bcp14">MUST</em> be rejected as invalid. If the port subcomponent is empty or not given, then TCP port 80 is assumed (the default reserved
    1107          port for WWW services).
    1108       </p>
    1109       <p id="rfc.section.2.7.1.p.5">Regardless of the form of host identifier, access to that host is not implied by the mere presence of its name or address.
    1110          The host might or might not exist and, even when it does exist, might or might not be running an HTTP server or listening
    1111          to the indicated port. The "http" URI scheme makes use of the delegated nature of Internet names and addresses to establish
    1112          a naming authority (whatever entity has the ability to place an HTTP server at that Internet name or address) and allows that
    1113          authority to determine which names are valid and how they might be used.
    1114       </p>
    1115       <p id="rfc.section.2.7.1.p.6">When an "http" URI is used within a context that calls for access to the indicated resource, a client <em class="bcp14">MAY</em> attempt access by resolving the host to an IP address, establishing a TCP connection to that address on the indicated port,
    1116          and sending an HTTP request message to the server containing the URI's identifying data as described in <a href="#request" title="Request">Section&nbsp;4</a>. If the server responds to that request with a non-interim HTTP response message, as described in <a href="#response" title="Response">Section&nbsp;5</a>, then that response is considered an authoritative answer to the client's request.
    1117       </p>
    1118       <p id="rfc.section.2.7.1.p.7">Although HTTP is independent of the transport protocol, the "http" scheme is specific to TCP-based services because the name
    1119          delegation process depends on TCP for establishing authority. An HTTP service based on some other underlying connection protocol
    1120          would presumably be identified using a different URI scheme, just as the "https" scheme (below) is used for servers that require
    1121          an SSL/TLS transport layer on a connection. Other protocols might also be used to provide access to "http" identified resources
    1122          — it is only the authoritative interface used for mapping the namespace that is specific to TCP.
    1123       </p>
    1124       <p id="rfc.section.2.7.1.p.8">The URI generic syntax for authority also includes a deprecated userinfo subcomponent (<a href="#RFC3986" id="rfc.xref.RFC3986.15"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.2.1">Section 3.2.1</a>) for including user authentication information in the URI. Some implementations make use of the userinfo component for internal
    1125          configuration of authentication information, such as within command invocation options, configuration files, or bookmark lists,
    1126          even though such usage might expose a user identifier or password. Senders <em class="bcp14">MUST NOT</em> include a userinfo subcomponent (and its "@" delimiter) when transmitting an "http" URI in a message. Recipients of HTTP messages
    1127          that contain a URI reference <em class="bcp14">SHOULD</em> parse for the existence of userinfo and treat its presence as an error, likely indicating that the deprecated subcomponent
    1128          is being used to obscure the authority for the sake of phishing attacks.
    1129       </p>
    1130       <h3 id="rfc.section.2.7.2"><a href="#rfc.section.2.7.2">2.7.2</a>&nbsp;<a id="https.uri" href="#https.uri">https URI scheme</a></h3>
    1131       <div id="rfc.iref.h.2"></div>
    1132       <div id="rfc.iref.u.4"></div>
    1133       <p id="rfc.section.2.7.2.p.1">The "https" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
    1134          namespace governed by a potential HTTP origin server listening for SSL/TLS-secured connections on a given TCP port.
    1135       </p>
    1136       <p id="rfc.section.2.7.2.p.2">All of the requirements listed above for the "http" scheme are also requirements for the "https" scheme, except that a default
    1137          TCP port of 443 is assumed if the port subcomponent is empty or not given, and the TCP connection <em class="bcp14">MUST</em> be secured for privacy through the use of strong encryption prior to sending the first HTTP request.
    1138       </p>
    1139       <div id="rfc.figure.u.17"></div><pre class="inline"><span id="rfc.iref.g.27"></span>  <a href="#https.uri" class="smpl">https-URI</a> = "https:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]
     1108               any form of reference (URI-reference), only a URI in absolute form (absolute-URI), only the path and optional query components,
     1109               or some combination of the above. Unless otherwise indicated, URI references are parsed relative to the effective request
     1110               URI, which defines the default base URI for references in both the request and its corresponding response.
     1111            </p>
     1112            <div id="http.uri">
     1113               <h3 id="rfc.section.2.7.1"><a href="#rfc.section.2.7.1">2.7.1</a>&nbsp;<a href="#http.uri">http URI scheme</a></h3>
     1114               <div id="rfc.iref.h.1"></div>
     1115               <div id="rfc.iref.u.3"></div>
     1116               <p id="rfc.section.2.7.1.p.1">The "http" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
     1117                  namespace governed by a potential HTTP origin server listening for TCP connections on a given port.
     1118               </p>
     1119               <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.26"></span>  <a href="#http.uri" class="smpl">http-URI</a> = "http:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]
     1120</pre><p id="rfc.section.2.7.1.p.3">The HTTP origin server is identified by the generic syntax's <a href="#uri" class="smpl">authority</a> component, which includes a host identifier and optional TCP port (<a href="#RFC3986" id="rfc.xref.RFC3986.14"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.2.2">Section 3.2.2</a>). The remainder of the URI, consisting of both the hierarchical path component and optional query component, serves as an
     1121                  identifier for a potential resource within that origin server's name space.
     1122               </p>
     1123               <p id="rfc.section.2.7.1.p.4">If the host identifier is provided as an IP literal or IPv4 address, then the origin server is any listener on the indicated
     1124                  TCP port at that IP address. If host is a registered name, then that name is considered an indirect identifier and the recipient
     1125                  might use a name resolution service, such as DNS, to find the address of a listener for that host. The host <em class="bcp14">MUST NOT</em> be empty; if an "http" URI is received with an empty host, then it <em class="bcp14">MUST</em> be rejected as invalid. If the port subcomponent is empty or not given, then TCP port 80 is assumed (the default reserved
     1126                  port for WWW services).
     1127               </p>
     1128               <p id="rfc.section.2.7.1.p.5">Regardless of the form of host identifier, access to that host is not implied by the mere presence of its name or address.
     1129                  The host might or might not exist and, even when it does exist, might or might not be running an HTTP server or listening
     1130                  to the indicated port. The "http" URI scheme makes use of the delegated nature of Internet names and addresses to establish
     1131                  a naming authority (whatever entity has the ability to place an HTTP server at that Internet name or address) and allows that
     1132                  authority to determine which names are valid and how they might be used.
     1133               </p>
     1134               <p id="rfc.section.2.7.1.p.6">When an "http" URI is used within a context that calls for access to the indicated resource, a client <em class="bcp14">MAY</em> attempt access by resolving the host to an IP address, establishing a TCP connection to that address on the indicated port,
     1135                  and sending an HTTP request message to the server containing the URI's identifying data as described in <a href="#request" title="Request">Section&nbsp;4</a>. If the server responds to that request with a non-interim HTTP response message, as described in <a href="#response" title="Response">Section&nbsp;5</a>, then that response is considered an authoritative answer to the client's request.
     1136               </p>
     1137               <p id="rfc.section.2.7.1.p.7">Although HTTP is independent of the transport protocol, the "http" scheme is specific to TCP-based services because the name
     1138                  delegation process depends on TCP for establishing authority. An HTTP service based on some other underlying connection protocol
     1139                  would presumably be identified using a different URI scheme, just as the "https" scheme (below) is used for servers that require
     1140                  an SSL/TLS transport layer on a connection. Other protocols might also be used to provide access to "http" identified resources
     1141                  — it is only the authoritative interface used for mapping the namespace that is specific to TCP.
     1142               </p>
     1143               <p id="rfc.section.2.7.1.p.8">The URI generic syntax for authority also includes a deprecated userinfo subcomponent (<a href="#RFC3986" id="rfc.xref.RFC3986.15"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.2.1">Section 3.2.1</a>) for including user authentication information in the URI. Some implementations make use of the userinfo component for internal
     1144                  configuration of authentication information, such as within command invocation options, configuration files, or bookmark lists,
     1145                  even though such usage might expose a user identifier or password. Senders <em class="bcp14">MUST NOT</em> include a userinfo subcomponent (and its "@" delimiter) when transmitting an "http" URI in a message. Recipients of HTTP messages
     1146                  that contain a URI reference <em class="bcp14">SHOULD</em> parse for the existence of userinfo and treat its presence as an error, likely indicating that the deprecated subcomponent
     1147                  is being used to obscure the authority for the sake of phishing attacks.
     1148               </p>
     1149            </div>
     1150            <div id="https.uri">
     1151               <h3 id="rfc.section.2.7.2"><a href="#rfc.section.2.7.2">2.7.2</a>&nbsp;<a href="#https.uri">https URI scheme</a></h3>
     1152               <div id="rfc.iref.h.2"></div>
     1153               <div id="rfc.iref.u.4"></div>
     1154               <p id="rfc.section.2.7.2.p.1">The "https" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
     1155                  namespace governed by a potential HTTP origin server listening for SSL/TLS-secured connections on a given TCP port.
     1156               </p>
     1157               <p id="rfc.section.2.7.2.p.2">All of the requirements listed above for the "http" scheme are also requirements for the "https" scheme, except that a default
     1158                  TCP port of 443 is assumed if the port subcomponent is empty or not given, and the TCP connection <em class="bcp14">MUST</em> be secured for privacy through the use of strong encryption prior to sending the first HTTP request.
     1159               </p>
     1160               <div id="rfc.figure.u.17"></div><pre class="inline"><span id="rfc.iref.g.27"></span>  <a href="#https.uri" class="smpl">https-URI</a> = "https:" "//" <a href="#uri" class="smpl">authority</a> <a href="#uri" class="smpl">path-abempty</a> [ "?" <a href="#uri" class="smpl">query</a> ]
    11401161</pre><p id="rfc.section.2.7.2.p.4">Unlike the "http" scheme, responses to "https" identified requests are never "public" and thus <em class="bcp14">MUST NOT</em> be reused for shared caching. They can, however, be reused in a private cache if the message is cacheable by default in HTTP
    1141          or specifically indicated as such by 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.3"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
    1142       </p>
    1143       <p id="rfc.section.2.7.2.p.5">Resources made available via the "https" scheme have no shared identity with the "http" scheme even if their resource identifiers
    1144          indicate the same authority (the same host listening to the same TCP port). They are distinct name spaces and are considered
    1145          to be distinct origin servers. However, an extension to HTTP that is defined to apply to entire host domains, such as the
    1146          Cookie protocol <a href="#RFC6265" id="rfc.xref.RFC6265.1"><cite title="HTTP State Management Mechanism">[RFC6265]</cite></a>, can allow information set by one service to impact communication with other services within a matching group of host domains.
    1147       </p>
    1148       <p id="rfc.section.2.7.2.p.6">The process for authoritative access to an "https" identified resource is defined in <a href="#RFC2818" id="rfc.xref.RFC2818.1"><cite title="HTTP Over TLS">[RFC2818]</cite></a>.
    1149       </p>
    1150       <h3 id="rfc.section.2.7.3"><a href="#rfc.section.2.7.3">2.7.3</a>&nbsp;<a id="uri.comparison" href="#uri.comparison">http and https URI Normalization and Comparison</a></h3>
    1151       <p id="rfc.section.2.7.3.p.1">Since the "http" and "https" schemes conform to the URI generic syntax, such URIs are normalized and compared according to
    1152          the algorithm defined in <a href="#RFC3986" id="rfc.xref.RFC3986.16"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-6">Section 6</a>, using the defaults described above for each scheme.
    1153       </p>
    1154       <p id="rfc.section.2.7.3.p.2">If the port is equal to the default port for a scheme, the normal form is to elide the port subcomponent. Likewise, an empty
    1155          path component is equivalent to an absolute path of "/", so the normal form is to provide a path of "/" instead. The scheme
    1156          and host are case-insensitive and normally provided in lowercase; all other components are compared in a case-sensitive manner.
    1157          Characters other than those in the "reserved" set are equivalent to their percent-encoded octets (see <a href="#RFC3986" id="rfc.xref.RFC3986.17"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-2.1">Section 2.1</a>): the normal form is to not encode them.
    1158       </p>
    1159       <p id="rfc.section.2.7.3.p.3">For example, the following three URIs are equivalent:</p>
    1160       <div id="rfc.figure.u.18"></div><pre class="text">   http://example.com:80/~smith/home.html
     1162                  or specifically indicated as such by 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.3"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
     1163               </p>
     1164               <p id="rfc.section.2.7.2.p.5">Resources made available via the "https" scheme have no shared identity with the "http" scheme even if their resource identifiers
     1165                  indicate the same authority (the same host listening to the same TCP port). They are distinct name spaces and are considered
     1166                  to be distinct origin servers. However, an extension to HTTP that is defined to apply to entire host domains, such as the
     1167                  Cookie protocol <a href="#RFC6265" id="rfc.xref.RFC6265.1"><cite title="HTTP State Management Mechanism">[RFC6265]</cite></a>, can allow information set by one service to impact communication with other services within a matching group of host domains.
     1168               </p>
     1169               <p id="rfc.section.2.7.2.p.6">The process for authoritative access to an "https" identified resource is defined in <a href="#RFC2818" id="rfc.xref.RFC2818.1"><cite title="HTTP Over TLS">[RFC2818]</cite></a>.
     1170               </p>
     1171            </div>
     1172            <div id="uri.comparison">
     1173               <h3 id="rfc.section.2.7.3"><a href="#rfc.section.2.7.3">2.7.3</a>&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></h3>
     1174               <p id="rfc.section.2.7.3.p.1">Since the "http" and "https" schemes conform to the URI generic syntax, such URIs are normalized and compared according to
     1175                  the algorithm defined in <a href="#RFC3986" id="rfc.xref.RFC3986.16"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-6">Section 6</a>, using the defaults described above for each scheme.
     1176               </p>
     1177               <p id="rfc.section.2.7.3.p.2">If the port is equal to the default port for a scheme, the normal form is to elide the port subcomponent. Likewise, an empty
     1178                  path component is equivalent to an absolute path of "/", so the normal form is to provide a path of "/" instead. The scheme
     1179                  and host are case-insensitive and normally provided in lowercase; all other components are compared in a case-sensitive manner.
     1180                  Characters other than those in the "reserved" set are equivalent to their percent-encoded octets (see <a href="#RFC3986" id="rfc.xref.RFC3986.17"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-2.1">Section 2.1</a>): the normal form is to not encode them.
     1181               </p>
     1182               <p id="rfc.section.2.7.3.p.3">For example, the following three URIs are equivalent:</p>
     1183               <div id="rfc.figure.u.18"></div><pre class="text">   http://example.com:80/~smith/home.html
    11611184   http://EXAMPLE.com/%7Esmith/home.html
    11621185   http://EXAMPLE.com:/%7esmith/home.html
    1163 </pre><h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="http.message" href="#http.message">Message Format</a></h1>
    1164       <div id="rfc.iref.h.3"></div>
    1165       <div id="rfc.iref.h.4"></div>
    1166       <div id="rfc.iref.h.5"></div>
    1167       <p id="rfc.section.3.p.1">All HTTP/1.1 messages consist of a start-line followed by a sequence of octets in a format similar to the Internet Message
    1168          Format <a href="#RFC5322" id="rfc.xref.RFC5322.2"><cite title="Internet Message Format">[RFC5322]</cite></a>: zero or more header fields (collectively referred to as the "headers" or the "header section"), an empty line indicating
    1169          the end of the header section, and an optional message-body.
    1170       </p>
    1171       <p id="rfc.section.3.p.2">An HTTP message can either be a request from client to server or a response from server to client. Syntactically, the two
    1172          types of message differ only in the start-line, which is either a Request-Line (for requests) or a Status-Line (for responses),
    1173          and in the algorithm for determining the length of the message-body (<a href="#message.body" title="Message Body">Section&nbsp;3.3</a>). In theory, a client could receive requests and a server could receive responses, distinguishing them by their different
    1174          start-line formats, but in practice servers are implemented to only expect a request (a response is interpreted as an unknown
    1175          or invalid request method) and clients are implemented to only expect a response.
    1176       </p>
    1177       <div id="rfc.figure.u.19"></div><pre class="inline"><span id="rfc.iref.g.28"></span>  <a href="#http.message" class="smpl">HTTP-message</a>    = <a href="#http.message" class="smpl">start-line</a>
     1186</pre></div>
     1187         </div>
     1188      </div>
     1189      <div id="http.message">
     1190         <h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a href="#http.message">Message Format</a></h1>
     1191         <div id="rfc.iref.h.3"></div>
     1192         <div id="rfc.iref.h.4"></div>
     1193         <div id="rfc.iref.h.5"></div>
     1194         <p id="rfc.section.3.p.1">All HTTP/1.1 messages consist of a start-line followed by a sequence of octets in a format similar to the Internet Message
     1195            Format <a href="#RFC5322" id="rfc.xref.RFC5322.2"><cite title="Internet Message Format">[RFC5322]</cite></a>: zero or more header fields (collectively referred to as the "headers" or the "header section"), an empty line indicating
     1196            the end of the header section, and an optional message-body.
     1197         </p>
     1198         <p id="rfc.section.3.p.2">An HTTP message can either be a request from client to server or a response from server to client. Syntactically, the two
     1199            types of message differ only in the start-line, which is either a Request-Line (for requests) or a Status-Line (for responses),
     1200            and in the algorithm for determining the length of the message-body (<a href="#message.body" title="Message Body">Section&nbsp;3.3</a>). In theory, a client could receive requests and a server could receive responses, distinguishing them by their different
     1201            start-line formats, but in practice servers are implemented to only expect a request (a response is interpreted as an unknown
     1202            or invalid request method) and clients are implemented to only expect a response.
     1203         </p>
     1204         <div id="rfc.figure.u.19"></div><pre class="inline"><span id="rfc.iref.g.28"></span>  <a href="#http.message" class="smpl">HTTP-message</a>    = <a href="#http.message" class="smpl">start-line</a>
    11781205                    *( <a href="#header.fields" class="smpl">header-field</a> <a href="#core.rules" class="smpl">CRLF</a> )
    11791206                    <a href="#core.rules" class="smpl">CRLF</a>
     
    11811208  <a href="#http.message" class="smpl">start-line</a>      = <a href="#request-line" class="smpl">Request-Line</a> / <a href="#status-line" class="smpl">Status-Line</a>
    11821209</pre><p id="rfc.section.3.p.4">Implementations <em class="bcp14">MUST NOT</em> send whitespace between the start-line and the first header field. The presence of such whitespace in a request might be an
    1183          attempt to trick a server into ignoring that field or processing the line after it as a new request, either of which might
    1184          result in a security vulnerability if other implementations within the request chain interpret the same message differently.
    1185          Likewise, the presence of such whitespace in a response might be ignored by some clients or cause others to cease parsing.
    1186       </p>
    1187       <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a id="message.robustness" href="#message.robustness">Message Parsing and Robustness</a></h2>
    1188       <p id="rfc.section.3.1.p.1">The normal procedure for parsing an HTTP message is to read the start-line into a structure, read each header field into a
    1189          hash table by field name until the empty line, and then use the parsed data to determine if a message-body is expected. If
    1190          a message-body has been indicated, then it is read as a stream until an amount of octets equal to the message-body length
    1191          is read or the connection is closed.
    1192       </p>
    1193       <p id="rfc.section.3.1.p.2">Care must be taken to parse an HTTP message as a sequence of octets in an encoding that is a superset of US-ASCII. Attempting
    1194          to parse HTTP as a stream of Unicode characters in a character encoding like UTF-16 might introduce security flaws due to
    1195          the differing ways that such parsers interpret invalid characters.
    1196       </p>
    1197       <p id="rfc.section.3.1.p.3">Older HTTP/1.0 client implementations might send an extra CRLF after a POST request as a lame workaround for some early server
    1198          applications that failed to read message-body content that was not terminated by a line-ending. An HTTP/1.1 client <em class="bcp14">MUST NOT</em> preface or follow a request with an extra CRLF. If terminating the request message-body with a line-ending is desired, then
    1199          the client <em class="bcp14">MUST</em> include the terminating CRLF octets as part of the message-body length.
    1200       </p>
    1201       <p id="rfc.section.3.1.p.4">In the interest of robustness, servers <em class="bcp14">SHOULD</em> ignore at least one empty line received where a Request-Line is expected. In other words, if the server is reading the protocol
    1202          stream at the beginning of a message and receives a CRLF first, it <em class="bcp14">SHOULD</em> ignore the CRLF. Likewise, although the line terminator for the start-line and header fields is the sequence CRLF, we recommend
    1203          that recipients recognize a single LF as a line terminator and ignore any CR.
    1204       </p>
    1205       <p id="rfc.section.3.1.p.5">When a server listening only for HTTP request messages, or processing what appears from the start-line to be an HTTP request
    1206          message, receives a sequence of octets that does not match the HTTP-message grammar aside from the robustness exceptions listed
    1207          above, the server <em class="bcp14">MUST</em> respond with an HTTP/1.1 400 (Bad Request) response.
    1208       </p>
    1209       <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a id="header.fields" href="#header.fields">Header Fields</a></h2>
    1210       <p id="rfc.section.3.2.p.1">Each HTTP header field consists of a case-insensitive field name followed by a colon (":"), optional whitespace, and the field
    1211          value.
    1212       </p>
    1213       <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.29"></span><span id="rfc.iref.g.30"></span><span id="rfc.iref.g.31"></span><span id="rfc.iref.g.32"></span>  <a href="#header.fields" class="smpl">header-field</a>   = <a href="#header.fields" class="smpl">field-name</a> ":" <a href="#rule.whitespace" class="smpl">OWS</a> [ <a href="#header.fields" class="smpl">field-value</a> ] <a href="#rule.whitespace" class="smpl">OWS</a>
     1210            attempt to trick a server into ignoring that field or processing the line after it as a new request, either of which might
     1211            result in a security vulnerability if other implementations within the request chain interpret the same message differently.
     1212            Likewise, the presence of such whitespace in a response might be ignored by some clients or cause others to cease parsing.
     1213         </p>
     1214         <div id="message.robustness">
     1215            <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a href="#message.robustness">Message Parsing and Robustness</a></h2>
     1216            <p id="rfc.section.3.1.p.1">The normal procedure for parsing an HTTP message is to read the start-line into a structure, read each header field into a
     1217               hash table by field name until the empty line, and then use the parsed data to determine if a message-body is expected. If
     1218               a message-body has been indicated, then it is read as a stream until an amount of octets equal to the message-body length
     1219               is read or the connection is closed.
     1220            </p>
     1221            <p id="rfc.section.3.1.p.2">Care must be taken to parse an HTTP message as a sequence of octets in an encoding that is a superset of US-ASCII. Attempting
     1222               to parse HTTP as a stream of Unicode characters in a character encoding like UTF-16 might introduce security flaws due to
     1223               the differing ways that such parsers interpret invalid characters.
     1224            </p>
     1225            <p id="rfc.section.3.1.p.3">Older HTTP/1.0 client implementations might send an extra CRLF after a POST request as a lame workaround for some early server
     1226               applications that failed to read message-body content that was not terminated by a line-ending. An HTTP/1.1 client <em class="bcp14">MUST NOT</em> preface or follow a request with an extra CRLF. If terminating the request message-body with a line-ending is desired, then
     1227               the client <em class="bcp14">MUST</em> include the terminating CRLF octets as part of the message-body length.
     1228            </p>
     1229            <p id="rfc.section.3.1.p.4">In the interest of robustness, servers <em class="bcp14">SHOULD</em> ignore at least one empty line received where a Request-Line is expected. In other words, if the server is reading the protocol
     1230               stream at the beginning of a message and receives a CRLF first, it <em class="bcp14">SHOULD</em> ignore the CRLF. Likewise, although the line terminator for the start-line and header fields is the sequence CRLF, we recommend
     1231               that recipients recognize a single LF as a line terminator and ignore any CR.
     1232            </p>
     1233            <p id="rfc.section.3.1.p.5">When a server listening only for HTTP request messages, or processing what appears from the start-line to be an HTTP request
     1234               message, receives a sequence of octets that does not match the HTTP-message grammar aside from the robustness exceptions listed
     1235               above, the server <em class="bcp14">MUST</em> respond with an HTTP/1.1 400 (Bad Request) response.
     1236            </p>
     1237         </div>
     1238         <div id="header.fields">
     1239            <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a href="#header.fields">Header Fields</a></h2>
     1240            <p id="rfc.section.3.2.p.1">Each HTTP header field consists of a case-insensitive field name followed by a colon (":"), optional whitespace, and the field
     1241               value.
     1242            </p>
     1243            <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.29"></span><span id="rfc.iref.g.30"></span><span id="rfc.iref.g.31"></span><span id="rfc.iref.g.32"></span>  <a href="#header.fields" class="smpl">header-field</a>   = <a href="#header.fields" class="smpl">field-name</a> ":" <a href="#rule.whitespace" class="smpl">OWS</a> [ <a href="#header.fields" class="smpl">field-value</a> ] <a href="#rule.whitespace" class="smpl">OWS</a>
    12141244  <a href="#header.fields" class="smpl">field-name</a>     = <a href="#rule.token.separators" class="smpl">token</a>
    12151245  <a href="#header.fields" class="smpl">field-value</a>    = *( <a href="#header.fields" class="smpl">field-content</a> / <a href="#rule.whitespace" class="smpl">OWS</a> )
    12161246  <a href="#header.fields" class="smpl">field-content</a>  = *( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
    12171247</pre><p id="rfc.section.3.2.p.3">The field-name token labels the corresponding field-value as having the semantics defined by that header field. For example,
    1218          the Date header field is defined in <a href="#header.date" id="rfc.xref.header.date.1" title="Date">Section&nbsp;9.3</a> as containing the origination timestamp for the message in which it appears.
    1219       </p>
    1220       <p id="rfc.section.3.2.p.4">HTTP header fields are fully extensible: there is no limit on the introduction of new field names, each presumably defining
    1221          new semantics, or on the number of header fields used in a given message. Existing fields are defined in each part of this
    1222          specification and in many other specifications outside the standards process. New header fields can be introduced without
    1223          changing the protocol version if their defined semantics allow them to be safely ignored by recipients that do not recognize
    1224          them.
    1225       </p>
    1226       <p id="rfc.section.3.2.p.5">New HTTP header fields <em class="bcp14">SHOULD</em> be registered with IANA according to the procedures in <a href="#header.field.registration" title="Header Field Registration">Section&nbsp;10.1</a>. Unrecognized header fields <em class="bcp14">MUST</em> be forwarded by a proxy unless the field-name is listed in the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.3" title="Connection">Section&nbsp;9.1</a>) or the proxy is specifically configured to block or otherwise transform such fields. Unrecognized header fields <em class="bcp14">SHOULD</em> be ignored by other recipients.
    1227       </p>
    1228       <p id="rfc.section.3.2.p.6">The order in which header fields with differing field names are received is not significant. However, it is "good practice"
    1229          to send header fields that contain control data first, such as Host on requests and Date on responses, so that implementations
    1230          can decide when not to handle a message as early as possible. A server <em class="bcp14">MUST</em> wait until the entire header section is received before interpreting a request message, since later header fields might include
    1231          conditionals, authentication credentials, or deliberately misleading duplicate header fields that would impact request processing.
    1232       </p>
    1233       <p id="rfc.section.3.2.p.7">Multiple header fields with the same field name <em class="bcp14">MUST NOT</em> be sent in a message unless the entire field value for that header field is defined as a comma-separated list [i.e., #(values)].
    1234          Multiple header fields with the same field name can be combined into one "field-name: field-value" pair, without changing
    1235          the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by
    1236          a comma. The order in which header fields with the same field name are received is therefore significant to the interpretation
    1237          of the combined field value; a proxy <em class="bcp14">MUST NOT</em> change the order of these field values when forwarding a message.
    1238       </p>
    1239       <div class="note" id="rfc.section.3.2.p.8">
    1240          <p> <b>Note:</b> The "Set-Cookie" header field as implemented in practice can occur multiple times, but does not use the list syntax, and thus
    1241             cannot be combined into a single line (<a href="#RFC6265" id="rfc.xref.RFC6265.2"><cite title="HTTP State Management Mechanism">[RFC6265]</cite></a>). (See Appendix A.2.3 of <a href="#Kri2001" id="rfc.xref.Kri2001.1"><cite title="HTTP Cookies: Standards, Privacy, and Politics">[Kri2001]</cite></a> for details.) Also note that the Set-Cookie2 header field specified in <a href="#RFC2965" id="rfc.xref.RFC2965.1"><cite title="HTTP State Management Mechanism">[RFC2965]</cite></a> does not share this problem.
    1242          </p>
    1243       </div>
    1244       <h3 id="rfc.section.3.2.1"><a href="#rfc.section.3.2.1">3.2.1</a>&nbsp;<a id="field.parsing" href="#field.parsing">Field Parsing</a></h3>
    1245       <p id="rfc.section.3.2.1.p.1">No whitespace is allowed between the header field-name and colon. In the past, differences in the handling of such whitespace
    1246          have led to security vulnerabilities in request routing and response handling. Any received request message that contains
    1247          whitespace between a header field-name and colon <em class="bcp14">MUST</em> be rejected with a response code of 400 (Bad Request). A proxy <em class="bcp14">MUST</em> remove any such whitespace from a response message before forwarding the message downstream.
    1248       </p>
    1249       <p id="rfc.section.3.2.1.p.2">A field value <em class="bcp14">MAY</em> be preceded by optional whitespace (OWS); a single SP is preferred. The field value does not include any leading or trailing
    1250          white space: OWS occurring before the first non-whitespace octet of the field value or after the last non-whitespace octet
    1251          of the field value is ignored and <em class="bcp14">SHOULD</em> be removed before further processing (as this does not change the meaning of the header field).
    1252       </p>
    1253       <p id="rfc.section.3.2.1.p.3">Historically, HTTP header field values could be extended over multiple lines by preceding each extra line with at least one
    1254          space or horizontal tab octet (line folding). This specification deprecates such line folding except within the message/http
    1255          media type (<a href="#internet.media.type.message.http" title="Internet Media Type message/http">Section&nbsp;10.3.1</a>). HTTP senders <em class="bcp14">MUST NOT</em> produce messages that include line folding (i.e., that contain any field-content that matches the obs-fold rule) unless the
    1256          message is intended for packaging within the message/http media type. HTTP recipients <em class="bcp14">SHOULD</em> accept line folding and replace any embedded obs-fold whitespace with either a single SP or a matching number of SP octets
    1257          (to avoid buffer copying) prior to interpreting the field value or forwarding the message downstream.
    1258       </p>
    1259       <p id="rfc.section.3.2.1.p.4">Historically, HTTP has allowed field content with text in the ISO-8859-1 <a href="#ISO-8859-1" id="rfc.xref.ISO-8859-1.1"><cite title="Information technology -- 8-bit single-byte coded graphic character sets -- Part 1: Latin alphabet No. 1">[ISO-8859-1]</cite></a> character encoding and supported other character sets only through use of <a href="#RFC2047" id="rfc.xref.RFC2047.1"><cite title="MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text">[RFC2047]</cite></a> encoding. In practice, most HTTP header field values use only a subset of the US-ASCII character encoding <a href="#USASCII" id="rfc.xref.USASCII.2"><cite title="Coded Character Set -- 7-bit American Standard Code for Information Interchange">[USASCII]</cite></a>. Newly defined header fields <em class="bcp14">SHOULD</em> limit their field values to US-ASCII octets. Recipients <em class="bcp14">SHOULD</em> treat other (obs-text) octets in field content as opaque data.
    1260       </p>
    1261       <h3 id="rfc.section.3.2.2"><a href="#rfc.section.3.2.2">3.2.2</a>&nbsp;<a id="field.length" href="#field.length">Field Length</a></h3>
    1262       <p id="rfc.section.3.2.2.p.1">HTTP does not place a pre-defined limit on the length of header fields, either in isolation or as a set. A server <em class="bcp14">MUST</em> be prepared to receive request header fields of unbounded length and respond with a 4xx status code if the received header
    1263          field(s) would be longer than the server wishes to handle.
    1264       </p>
    1265       <p id="rfc.section.3.2.2.p.2">A client that receives response headers that are longer than it wishes to handle can only treat it as a server error.</p>
    1266       <p id="rfc.section.3.2.2.p.3">Various ad-hoc limitations on header length are found in practice. It is <em class="bcp14">RECOMMENDED</em> that all HTTP senders and recipients support messages whose combined header fields have 4000 or more octets.
    1267       </p>
    1268       <h3 id="rfc.section.3.2.3"><a href="#rfc.section.3.2.3">3.2.3</a>&nbsp;<a id="field.rules" href="#field.rules">Common Field ABNF Rules</a></h3>
    1269       <div id="rule.token.separators">
    1270          <p id="rfc.section.3.2.3.p.1">        Many HTTP/1.1 header field values consist of words (token or quoted-string) separated by whitespace or special characters.
    1271             These special characters <em class="bcp14">MUST</em> be in a quoted string to be used within a parameter value (as defined in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
    1272          </p>
    1273       </div>
    1274       <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.33"></span><span id="rfc.iref.g.34"></span><span id="rfc.iref.g.35"></span><span id="rfc.iref.g.36"></span>  <a href="#rule.token.separators" class="smpl">word</a>           = <a href="#rule.token.separators" class="smpl">token</a> / <a href="#rule.quoted-string" class="smpl">quoted-string</a>
     1248               the Date header field is defined in <a href="#header.date" id="rfc.xref.header.date.1" title="Date">Section&nbsp;9.3</a> as containing the origination timestamp for the message in which it appears.
     1249            </p>
     1250            <p id="rfc.section.3.2.p.4">HTTP header fields are fully extensible: there is no limit on the introduction of new field names, each presumably defining
     1251               new semantics, or on the number of header fields used in a given message. Existing fields are defined in each part of this
     1252               specification and in many other specifications outside the standards process. New header fields can be introduced without
     1253               changing the protocol version if their defined semantics allow them to be safely ignored by recipients that do not recognize
     1254               them.
     1255            </p>
     1256            <p id="rfc.section.3.2.p.5">New HTTP header fields <em class="bcp14">SHOULD</em> be registered with IANA according to the procedures in <a href="#header.field.registration" title="Header Field Registration">Section&nbsp;10.1</a>. Unrecognized header fields <em class="bcp14">MUST</em> be forwarded by a proxy unless the field-name is listed in the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.3" title="Connection">Section&nbsp;9.1</a>) or the proxy is specifically configured to block or otherwise transform such fields. Unrecognized header fields <em class="bcp14">SHOULD</em> be ignored by other recipients.
     1257            </p>
     1258            <p id="rfc.section.3.2.p.6">The order in which header fields with differing field names are received is not significant. However, it is "good practice"
     1259               to send header fields that contain control data first, such as Host on requests and Date on responses, so that implementations
     1260               can decide when not to handle a message as early as possible. A server <em class="bcp14">MUST</em> wait until the entire header section is received before interpreting a request message, since later header fields might include
     1261               conditionals, authentication credentials, or deliberately misleading duplicate header fields that would impact request processing.
     1262            </p>
     1263            <p id="rfc.section.3.2.p.7">Multiple header fields with the same field name <em class="bcp14">MUST NOT</em> be sent in a message unless the entire field value for that header field is defined as a comma-separated list [i.e., #(values)].
     1264               Multiple header fields with the same field name can be combined into one "field-name: field-value" pair, without changing
     1265               the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by
     1266               a comma. The order in which header fields with the same field name are received is therefore significant to the interpretation
     1267               of the combined field value; a proxy <em class="bcp14">MUST NOT</em> change the order of these field values when forwarding a message.
     1268            </p>
     1269            <div class="note" id="rfc.section.3.2.p.8">
     1270               <p><b>Note:</b> The "Set-Cookie" header field as implemented in practice can occur multiple times, but does not use the list syntax, and thus
     1271                  cannot be combined into a single line (<a href="#RFC6265" id="rfc.xref.RFC6265.2"><cite title="HTTP State Management Mechanism">[RFC6265]</cite></a>). (See Appendix A.2.3 of <a href="#Kri2001" id="rfc.xref.Kri2001.1"><cite title="HTTP Cookies: Standards, Privacy, and Politics">[Kri2001]</cite></a> for details.) Also note that the Set-Cookie2 header field specified in <a href="#RFC2965" id="rfc.xref.RFC2965.1"><cite title="HTTP State Management Mechanism">[RFC2965]</cite></a> does not share this problem.
     1272               </p>
     1273            </div>
     1274            <div id="field.parsing">
     1275               <h3 id="rfc.section.3.2.1"><a href="#rfc.section.3.2.1">3.2.1</a>&nbsp;<a href="#field.parsing">Field Parsing</a></h3>
     1276               <p id="rfc.section.3.2.1.p.1">No whitespace is allowed between the header field-name and colon. In the past, differences in the handling of such whitespace
     1277                  have led to security vulnerabilities in request routing and response handling. Any received request message that contains
     1278                  whitespace between a header field-name and colon <em class="bcp14">MUST</em> be rejected with a response code of 400 (Bad Request). A proxy <em class="bcp14">MUST</em> remove any such whitespace from a response message before forwarding the message downstream.
     1279               </p>
     1280               <p id="rfc.section.3.2.1.p.2">A field value <em class="bcp14">MAY</em> be preceded by optional whitespace (OWS); a single SP is preferred. The field value does not include any leading or trailing
     1281                  white space: OWS occurring before the first non-whitespace octet of the field value or after the last non-whitespace octet
     1282                  of the field value is ignored and <em class="bcp14">SHOULD</em> be removed before further processing (as this does not change the meaning of the header field).
     1283               </p>
     1284               <p id="rfc.section.3.2.1.p.3">Historically, HTTP header field values could be extended over multiple lines by preceding each extra line with at least one
     1285                  space or horizontal tab octet (line folding). This specification deprecates such line folding except within the message/http
     1286                  media type (<a href="#internet.media.type.message.http" title="Internet Media Type message/http">Section&nbsp;10.3.1</a>). HTTP senders <em class="bcp14">MUST NOT</em> produce messages that include line folding (i.e., that contain any field-content that matches the obs-fold rule) unless the
     1287                  message is intended for packaging within the message/http media type. HTTP recipients <em class="bcp14">SHOULD</em> accept line folding and replace any embedded obs-fold whitespace with either a single SP or a matching number of SP octets
     1288                  (to avoid buffer copying) prior to interpreting the field value or forwarding the message downstream.
     1289               </p>
     1290               <p id="rfc.section.3.2.1.p.4">Historically, HTTP has allowed field content with text in the ISO-8859-1 <a href="#ISO-8859-1" id="rfc.xref.ISO-8859-1.1"><cite title="Information technology -- 8-bit single-byte coded graphic character sets -- Part 1: Latin alphabet No. 1">[ISO-8859-1]</cite></a> character encoding and supported other character sets only through use of <a href="#RFC2047" id="rfc.xref.RFC2047.1"><cite title="MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text">[RFC2047]</cite></a> encoding. In practice, most HTTP header field values use only a subset of the US-ASCII character encoding <a href="#USASCII" id="rfc.xref.USASCII.2"><cite title="Coded Character Set -- 7-bit American Standard Code for Information Interchange">[USASCII]</cite></a>. Newly defined header fields <em class="bcp14">SHOULD</em> limit their field values to US-ASCII octets. Recipients <em class="bcp14">SHOULD</em> treat other (obs-text) octets in field content as opaque data.
     1291               </p>
     1292            </div>
     1293            <div id="field.length">
     1294               <h3 id="rfc.section.3.2.2"><a href="#rfc.section.3.2.2">3.2.2</a>&nbsp;<a href="#field.length">Field Length</a></h3>
     1295               <p id="rfc.section.3.2.2.p.1">HTTP does not place a pre-defined limit on the length of header fields, either in isolation or as a set. A server <em class="bcp14">MUST</em> be prepared to receive request header fields of unbounded length and respond with a 4xx status code if the received header
     1296                  field(s) would be longer than the server wishes to handle.
     1297               </p>
     1298               <p id="rfc.section.3.2.2.p.2">A client that receives response headers that are longer than it wishes to handle can only treat it as a server error.</p>
     1299               <p id="rfc.section.3.2.2.p.3">Various ad-hoc limitations on header length are found in practice. It is <em class="bcp14">RECOMMENDED</em> that all HTTP senders and recipients support messages whose combined header fields have 4000 or more octets.
     1300               </p>
     1301            </div>
     1302            <div id="field.rules">
     1303               <h3 id="rfc.section.3.2.3"><a href="#rfc.section.3.2.3">3.2.3</a>&nbsp;<a href="#field.rules">Common Field ABNF Rules</a></h3>
     1304               <div id="rule.token.separators">
     1305                  <p id="rfc.section.3.2.3.p.1">    Many HTTP/1.1 header field values consist of words (token or quoted-string) separated by whitespace or special characters.
     1306                     These special characters <em class="bcp14">MUST</em> be in a quoted string to be used within a parameter value (as defined in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
     1307                  </p>
     1308               </div>
     1309               <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.33"></span><span id="rfc.iref.g.34"></span><span id="rfc.iref.g.35"></span><span id="rfc.iref.g.36"></span>  <a href="#rule.token.separators" class="smpl">word</a>           = <a href="#rule.token.separators" class="smpl">token</a> / <a href="#rule.quoted-string" class="smpl">quoted-string</a>
    12751310
    12761311  <a href="#rule.token.separators" class="smpl">token</a>          = 1*<a href="#rule.token.separators" class="smpl">tchar</a>
     
    12851320                 / "]" / "?" / "=" / "{" / "}"
    12861321</pre><div id="rule.quoted-string">
    1287          <p id="rfc.section.3.2.3.p.3">      A string of text is parsed as a single word if it is quoted using double-quote marks.</p>
    1288       </div>
    1289       <div id="rfc.figure.u.22"></div><pre class="inline"><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span><span id="rfc.iref.g.39"></span>  <a href="#rule.quoted-string" class="smpl">quoted-string</a>  = <a href="#core.rules" class="smpl">DQUOTE</a> *( <a href="#rule.quoted-string" class="smpl">qdtext</a> / <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> ) <a href="#core.rules" class="smpl">DQUOTE</a>
     1322                  <p id="rfc.section.3.2.3.p.3">   A string of text is parsed as a single word if it is quoted using double-quote marks.</p>
     1323               </div>
     1324               <div id="rfc.figure.u.22"></div><pre class="inline"><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span><span id="rfc.iref.g.39"></span>  <a href="#rule.quoted-string" class="smpl">quoted-string</a>  = <a href="#core.rules" class="smpl">DQUOTE</a> *( <a href="#rule.quoted-string" class="smpl">qdtext</a> / <a href="#rule.quoted-pair" class="smpl">quoted-pair</a> ) <a href="#core.rules" class="smpl">DQUOTE</a>
    12901325  <a href="#rule.quoted-string" class="smpl">qdtext</a>         = <a href="#rule.whitespace" class="smpl">OWS</a> / %x21 / %x23-5B / %x5D-7E / <a href="#rule.quoted-string" class="smpl">obs-text</a>
    12911326  <a href="#rule.quoted-string" class="smpl">obs-text</a>       = %x80-FF
    12921327</pre><div id="rule.quoted-pair">
    1293          <p id="rfc.section.3.2.3.p.5"> The backslash octet ("\") can be used as a single-octet quoting mechanism within quoted-string constructs:</p>
    1294       </div>
    1295       <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.40"></span>  <a href="#rule.quoted-pair" class="smpl">quoted-pair</a>    = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
     1328                  <p id="rfc.section.3.2.3.p.5"> The backslash octet ("\") can be used as a single-octet quoting mechanism within quoted-string constructs:</p>
     1329               </div>
     1330               <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.40"></span>  <a href="#rule.quoted-pair" class="smpl">quoted-pair</a>    = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
    12961331</pre><p id="rfc.section.3.2.3.p.7">Recipients that process the value of the quoted-string <em class="bcp14">MUST</em> handle a quoted-pair as if it were replaced by the octet following the backslash.
    1297       </p>
    1298       <p id="rfc.section.3.2.3.p.8">Senders <em class="bcp14">SHOULD NOT</em> escape octets in quoted-strings that do not require escaping (i.e., other than DQUOTE and the backslash octet).
    1299       </p>
    1300       <div id="rule.comment">
    1301          <p id="rfc.section.3.2.3.p.9">    Comments can be included in some HTTP header fields by surrounding the comment text with parentheses. Comments are only allowed
    1302             in fields containing "comment" as part of their field value definition.
    1303          </p>
    1304       </div>
    1305       <div id="rfc.figure.u.24"></div><pre class="inline"><span id="rfc.iref.g.41"></span><span id="rfc.iref.g.42"></span>  <a href="#rule.comment" class="smpl">comment</a>        = "(" *( <a href="#rule.comment" class="smpl">ctext</a> / <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> / <a href="#rule.comment" class="smpl">comment</a> ) ")"
     1332               </p>
     1333               <p id="rfc.section.3.2.3.p.8">Senders <em class="bcp14">SHOULD NOT</em> escape octets in quoted-strings that do not require escaping (i.e., other than DQUOTE and the backslash octet).
     1334               </p>
     1335               <div id="rule.comment">
     1336                  <p id="rfc.section.3.2.3.p.9">  Comments can be included in some HTTP header fields by surrounding the comment text with parentheses. Comments are only allowed
     1337                     in fields containing "comment" as part of their field value definition.
     1338                  </p>
     1339               </div>
     1340               <div id="rfc.figure.u.24"></div><pre class="inline"><span id="rfc.iref.g.41"></span><span id="rfc.iref.g.42"></span>  <a href="#rule.comment" class="smpl">comment</a>        = "(" *( <a href="#rule.comment" class="smpl">ctext</a> / <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a> / <a href="#rule.comment" class="smpl">comment</a> ) ")"
    13061341  <a href="#rule.comment" class="smpl">ctext</a>          = <a href="#rule.whitespace" class="smpl">OWS</a> / %x21-27 / %x2A-5B / %x5D-7E / <a href="#rule.quoted-string" class="smpl">obs-text</a>
    13071342</pre><div id="rule.quoted-cpair">
    1308          <p id="rfc.section.3.2.3.p.11">  The backslash octet ("\") can be used as a single-octet quoting mechanism within comment constructs:</p>
     1343                  <p id="rfc.section.3.2.3.p.11"> The backslash octet ("\") can be used as a single-octet quoting mechanism within comment constructs:</p>
     1344               </div>
     1345               <div id="rfc.figure.u.25"></div><pre class="inline"><span id="rfc.iref.g.43"></span>  <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a>    = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
     1346</pre><p id="rfc.section.3.2.3.p.13">Senders <em class="bcp14">SHOULD NOT</em> escape octets in comments that do not require escaping (i.e., other than the backslash octet "\" and the parentheses "(" and
     1347                  ")").
     1348               </p>
     1349            </div>
     1350         </div>
     1351         <div id="message.body">
     1352            <h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;<a href="#message.body">Message Body</a></h2>
     1353            <p id="rfc.section.3.3.p.1">The message-body (if any) of an HTTP message is used to carry the payload body associated with the request or response.</p>
     1354            <div id="rfc.figure.u.26"></div><pre class="inline"><span id="rfc.iref.g.44"></span>  <a href="#message.body" class="smpl">message-body</a> = *OCTET
     1355</pre><p id="rfc.section.3.3.p.3">The message-body differs from the payload body only when a transfer-coding has been applied, as indicated by the Transfer-Encoding
     1356               header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.1" title="Transfer-Encoding">Section&nbsp;9.7</a>). If more than one Transfer-Encoding header field is present in a message, the multiple field-values <em class="bcp14">MUST</em> be combined into one field-value, according to the algorithm defined in <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>, before determining the message-body length.
     1357            </p>
     1358            <p id="rfc.section.3.3.p.4">When one or more transfer-codings are applied to a payload in order to form the message-body, the Transfer-Encoding header
     1359               field <em class="bcp14">MUST</em> contain the list of transfer-codings applied. Transfer-Encoding is a property of the message, not of the payload, and thus <em class="bcp14">MAY</em> be added or removed by any implementation along the request/response chain under the constraints found in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>.
     1360            </p>
     1361            <p id="rfc.section.3.3.p.5">If a message is received that has multiple Content-Length header fields (<a href="#header.content-length" id="rfc.xref.header.content-length.1" title="Content-Length">Section&nbsp;9.2</a>) with field-values consisting of the same decimal value, or a single Content-Length header field with a field value containing
     1362               a list of identical decimal values (e.g., "Content-Length: 42, 42"), indicating that duplicate Content-Length header fields
     1363               have been generated or combined by an upstream message processor, then the recipient <em class="bcp14">MUST</em> either reject the message as invalid or replace the duplicated field-values with a single valid Content-Length field containing
     1364               that decimal value prior to determining the message-body length.
     1365            </p>
     1366            <p id="rfc.section.3.3.p.6">The rules for when a message-body is allowed in a message differ for requests and responses.</p>
     1367            <p id="rfc.section.3.3.p.7">The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field
     1368               in the request's header fields, even if the request method does not define any use for a message-body. This allows the request
     1369               message framing algorithm to be independent of method semantics.
     1370            </p>
     1371            <p id="rfc.section.3.3.p.8">For response messages, whether or not a message-body is included with a message is dependent on both the request method and
     1372               the response status code (<a href="#status.code.and.reason.phrase" title="Status Code and Reason Phrase">Section&nbsp;5.1.1</a>). Responses to the HEAD request method never include a message-body because the associated response header fields (e.g.,
     1373               Transfer-Encoding, Content-Length, etc.) only indicate what their values would have been if the request method had been GET.
     1374               All 1xx (Informational), 204 (No Content), and 304 (Not Modified) responses <em class="bcp14">MUST NOT</em> include a message-body. All other responses do include a message-body, although the body <em class="bcp14">MAY</em> be of zero length.
     1375            </p>
     1376            <p id="rfc.section.3.3.p.9">The length of the message-body is determined by one of the following (in order of precedence):</p>
     1377            <p id="rfc.section.3.3.p.10"></p>
     1378            <ol>
     1379               <li>
     1380                  <p>Any response to a HEAD request and any response with a status code of 100-199, 204, or 304 is always terminated by the first
     1381                     empty line after the header fields, regardless of the header fields present in the message, and thus cannot contain a message-body.
     1382                  </p>
     1383               </li>
     1384               <li>
     1385                  <p>If a Transfer-Encoding header field is present and the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>) is the final encoding, the message-body length is determined by reading and decoding the chunked data until the transfer-coding
     1386                     indicates the data is complete.
     1387                  </p>
     1388                  <p>If a Transfer-Encoding header field is present in a response and the "chunked" transfer-coding is not the final encoding,
     1389                     the message-body length is determined by reading the connection until it is closed by the server. If a Transfer-Encoding header
     1390                     field is present in a request and the "chunked" transfer-coding is not the final encoding, the message-body length cannot
     1391                     be determined reliably; the server <em class="bcp14">MUST</em> respond with the 400 (Bad Request) status code and then close the connection.
     1392                  </p>
     1393                  <p>If a message is received with both a Transfer-Encoding header field and a Content-Length header field, the Transfer-Encoding
     1394                     overrides the Content-Length. Such a message might indicate an attempt to perform request or response smuggling (bypass of
     1395                     security-related checks on message routing or content) and thus ought to be handled as an error. The provided Content-Length <em class="bcp14">MUST</em> be removed, prior to forwarding the message downstream, or replaced with the real message-body length after the transfer-coding
     1396                     is decoded.
     1397                  </p>
     1398               </li>
     1399               <li>
     1400                  <p>If a message is received without Transfer-Encoding and with either multiple Content-Length header fields having differing
     1401                     field-values or a single Content-Length header field having an invalid value, then the message framing is invalid and <em class="bcp14">MUST</em> be treated as an error to prevent request or response smuggling. If this is a request message, the server <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code and then close the connection. If this is a response message received by a proxy,
     1402                     the proxy <em class="bcp14">MUST</em> discard the received response, send a 502 (Bad Gateway) status code as its downstream response, and then close the connection.
     1403                     If this is a response message received by a user-agent, it <em class="bcp14">MUST</em> be treated as an error by discarding the message and closing the connection.
     1404                  </p>
     1405               </li>
     1406               <li>
     1407                  <p>If a valid Content-Length header field is present without Transfer-Encoding, its decimal value defines the message-body length
     1408                     in octets. If the actual number of octets sent in the message is less than the indicated Content-Length, the recipient <em class="bcp14">MUST</em> consider the message to be incomplete and treat the connection as no longer usable. If the actual number of octets sent in
     1409                     the message is more than the indicated Content-Length, the recipient <em class="bcp14">MUST</em> only process the message-body up to the field value's number of octets; the remainder of the message <em class="bcp14">MUST</em> either be discarded or treated as the next message in a pipeline. For the sake of robustness, a user-agent <em class="bcp14">MAY</em> attempt to detect and correct such an error in message framing if it is parsing the response to the last request on a connection
     1410                     and the connection has been closed by the server.
     1411                  </p>
     1412               </li>
     1413               <li>
     1414                  <p>If this is a request message and none of the above are true, then the message-body length is zero (no message-body is present).</p>
     1415               </li>
     1416               <li>
     1417                  <p>Otherwise, this is a response message without a declared message-body length, so the message-body length is determined by
     1418                     the number of octets received prior to the server closing the connection.
     1419                  </p>
     1420               </li>
     1421            </ol>
     1422            <p id="rfc.section.3.3.p.11">Since there is no way to distinguish a successfully completed, close-delimited message from a partially-received message interrupted
     1423               by network failure, implementations <em class="bcp14">SHOULD</em> use encoding or length-delimited messages whenever possible. The close-delimiting feature exists primarily for backwards compatibility
     1424               with HTTP/1.0.
     1425            </p>
     1426            <p id="rfc.section.3.3.p.12">A server <em class="bcp14">MAY</em> reject a request that contains a message-body but not a Content-Length by responding with 411 (Length Required).
     1427            </p>
     1428            <p id="rfc.section.3.3.p.13">Unless a transfer-coding other than "chunked" has been applied, a client that sends a request containing a message-body <em class="bcp14">SHOULD</em> use a valid Content-Length header field if the message-body length is known in advance, rather than the "chunked" encoding,
     1429               since some existing services respond to "chunked" with a 411 (Length Required) status code even though they understand the
     1430               chunked encoding. This is typically because such services are implemented via a gateway that requires a content-length in
     1431               advance of being called and the server is unable or unwilling to buffer the entire request before processing.
     1432            </p>
     1433            <p id="rfc.section.3.3.p.14">A client that sends a request containing a message-body <em class="bcp14">MUST</em> include a valid Content-Length header field if it does not know the server will handle HTTP/1.1 (or later) requests; such
     1434               knowledge can be in the form of specific user configuration or by remembering the version of a prior received response.
     1435            </p>
     1436         </div>
     1437         <div id="incomplete.messages">
     1438            <h2 id="rfc.section.3.4"><a href="#rfc.section.3.4">3.4</a>&nbsp;<a href="#incomplete.messages">Incomplete Messages</a></h2>
     1439            <p id="rfc.section.3.4.p.1">Request messages that are prematurely terminated, possibly due to a cancelled connection or a server-imposed time-out exception, <em class="bcp14">MUST</em> result in closure of the connection; sending an HTTP/1.1 error response prior to closing the connection is <em class="bcp14">OPTIONAL</em>.
     1440            </p>
     1441            <p id="rfc.section.3.4.p.2">Response messages that are prematurely terminated, usually by closure of the connection prior to receiving the expected number
     1442               of octets or by failure to decode a transfer-encoded message-body, <em class="bcp14">MUST</em> be recorded as incomplete. A response that terminates in the middle of the header block (before the empty line is received)
     1443               cannot be assumed to convey the full semantics of the response and <em class="bcp14">MUST</em> be treated as an error.
     1444            </p>
     1445            <p id="rfc.section.3.4.p.3">A message-body that uses the chunked transfer encoding is incomplete if the zero-sized chunk that terminates the encoding
     1446               has not been received. A message that uses a valid Content-Length is incomplete if the size of the message-body received (in
     1447               octets) is less than the value given by Content-Length. A response that has neither chunked transfer encoding nor Content-Length
     1448               is terminated by closure of the connection, and thus is considered complete regardless of the number of message-body octets
     1449               received, provided that the header block was received intact.
     1450            </p>
     1451            <p id="rfc.section.3.4.p.4">A user agent <em class="bcp14">MUST NOT</em> render an incomplete response message-body as if it were complete (i.e., some indication must be given to the user that an
     1452               error occurred). Cache requirements for incomplete responses are defined in <a href="p6-cache.html#response.cacheability" title="Response Cacheability">Section 2.1</a> of <a href="#Part6" id="rfc.xref.Part6.4"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
     1453            </p>
     1454            <p id="rfc.section.3.4.p.5">A server <em class="bcp14">MUST</em> read the entire request message-body or close the connection after sending its response, since otherwise the remaining data
     1455               on a persistent connection would be misinterpreted as the next request. Likewise, a client <em class="bcp14">MUST</em> read the entire response message-body if it intends to reuse the same connection for a subsequent request. Pipelining multiple
     1456               requests on a connection is described in <a href="#pipelining" title="Pipelining">Section&nbsp;7.1.2.2</a>.
     1457            </p>
     1458         </div>
     1459         <div id="general.header.fields">
     1460            <h2 id="rfc.section.3.5"><a href="#rfc.section.3.5">3.5</a>&nbsp;<a href="#general.header.fields">General Header Fields</a></h2>
     1461            <p id="rfc.section.3.5.p.1">There are a few header fields which have general applicability for both request and response messages, but which do not apply
     1462               to the payload being transferred. These header fields apply only to the message being transmitted.
     1463            </p>
     1464            <div id="rfc.table.u.1">
     1465               <table class="tt full left" cellpadding="3" cellspacing="0">
     1466                  <thead>
     1467                     <tr>
     1468                        <th>Header Field Name</th>
     1469                        <th>Defined in...</th>
     1470                     </tr>
     1471                  </thead>
     1472                  <tbody>
     1473                     <tr>
     1474                        <td class="left">Connection</td>
     1475                        <td class="left"><a href="#header.connection" id="rfc.xref.header.connection.4" title="Connection">Section&nbsp;9.1</a></td>
     1476                     </tr>
     1477                     <tr>
     1478                        <td class="left">Date</td>
     1479                        <td class="left"><a href="#header.date" id="rfc.xref.header.date.2" title="Date">Section&nbsp;9.3</a></td>
     1480                     </tr>
     1481                     <tr>
     1482                        <td class="left">Trailer</td>
     1483                        <td class="left"><a href="#header.trailer" id="rfc.xref.header.trailer.1" title="Trailer">Section&nbsp;9.6</a></td>
     1484                     </tr>
     1485                     <tr>
     1486                        <td class="left">Transfer-Encoding</td>
     1487                        <td class="left"><a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.2" title="Transfer-Encoding">Section&nbsp;9.7</a></td>
     1488                     </tr>
     1489                     <tr>
     1490                        <td class="left">Upgrade</td>
     1491                        <td class="left"><a href="#header.upgrade" id="rfc.xref.header.upgrade.1" title="Upgrade">Section&nbsp;9.8</a></td>
     1492                     </tr>
     1493                     <tr>
     1494                        <td class="left">Via</td>
     1495                        <td class="left"><a href="#header.via" id="rfc.xref.header.via.2" title="Via">Section&nbsp;9.9</a></td>
     1496                     </tr>
     1497                  </tbody>
     1498               </table>
     1499            </div>
     1500         </div>
    13091501      </div>
    1310       <div id="rfc.figure.u.25"></div><pre class="inline"><span id="rfc.iref.g.43"></span>  <a href="#rule.quoted-cpair" class="smpl">quoted-cpair</a>    = "\" ( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
    1311 </pre><p id="rfc.section.3.2.3.p.13">Senders <em class="bcp14">SHOULD NOT</em> escape octets in comments that do not require escaping (i.e., other than the backslash octet "\" and the parentheses "(" and
    1312          ")").
    1313       </p>
    1314       <h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;<a id="message.body" href="#message.body">Message Body</a></h2>
    1315       <p id="rfc.section.3.3.p.1">The message-body (if any) of an HTTP message is used to carry the payload body associated with the request or response.</p>
    1316       <div id="rfc.figure.u.26"></div><pre class="inline"><span id="rfc.iref.g.44"></span>  <a href="#message.body" class="smpl">message-body</a> = *OCTET
    1317 </pre><p id="rfc.section.3.3.p.3">The message-body differs from the payload body only when a transfer-coding has been applied, as indicated by the Transfer-Encoding
    1318          header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.1" title="Transfer-Encoding">Section&nbsp;9.7</a>). If more than one Transfer-Encoding header field is present in a message, the multiple field-values <em class="bcp14">MUST</em> be combined into one field-value, according to the algorithm defined in <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>, before determining the message-body length.
    1319       </p>
    1320       <p id="rfc.section.3.3.p.4">When one or more transfer-codings are applied to a payload in order to form the message-body, the Transfer-Encoding header
    1321          field <em class="bcp14">MUST</em> contain the list of transfer-codings applied. Transfer-Encoding is a property of the message, not of the payload, and thus <em class="bcp14">MAY</em> be added or removed by any implementation along the request/response chain under the constraints found in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>.
    1322       </p>
    1323       <p id="rfc.section.3.3.p.5">If a message is received that has multiple Content-Length header fields (<a href="#header.content-length" id="rfc.xref.header.content-length.1" title="Content-Length">Section&nbsp;9.2</a>) with field-values consisting of the same decimal value, or a single Content-Length header field with a field value containing
    1324          a list of identical decimal values (e.g., "Content-Length: 42, 42"), indicating that duplicate Content-Length header fields
    1325          have been generated or combined by an upstream message processor, then the recipient <em class="bcp14">MUST</em> either reject the message as invalid or replace the duplicated field-values with a single valid Content-Length field containing
    1326          that decimal value prior to determining the message-body length.
    1327       </p>
    1328       <p id="rfc.section.3.3.p.6">The rules for when a message-body is allowed in a message differ for requests and responses.</p>
    1329       <p id="rfc.section.3.3.p.7">The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field
    1330          in the request's header fields, even if the request method does not define any use for a message-body. This allows the request
    1331          message framing algorithm to be independent of method semantics.
    1332       </p>
    1333       <p id="rfc.section.3.3.p.8">For response messages, whether or not a message-body is included with a message is dependent on both the request method and
    1334          the response status code (<a href="#status.code.and.reason.phrase" title="Status Code and Reason Phrase">Section&nbsp;5.1.1</a>). Responses to the HEAD request method never include a message-body because the associated response header fields (e.g.,
    1335          Transfer-Encoding, Content-Length, etc.) only indicate what their values would have been if the request method had been GET.
    1336          All 1xx (Informational), 204 (No Content), and 304 (Not Modified) responses <em class="bcp14">MUST NOT</em> include a message-body. All other responses do include a message-body, although the body <em class="bcp14">MAY</em> be of zero length.
    1337       </p>
    1338       <p id="rfc.section.3.3.p.9">The length of the message-body is determined by one of the following (in order of precedence):</p>
    1339       <p id="rfc.section.3.3.p.10"> </p>
    1340       <ol>
    1341          <li>
    1342             <p>Any response to a HEAD request and any response with a status code of 100-199, 204, or 304 is always terminated by the first
    1343                empty line after the header fields, regardless of the header fields present in the message, and thus cannot contain a message-body.
    1344             </p>
    1345          </li>
    1346          <li>
    1347             <p>If a Transfer-Encoding header field is present and the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>) is the final encoding, the message-body length is determined by reading and decoding the chunked data until the transfer-coding
    1348                indicates the data is complete.
    1349             </p>
    1350             <p>If a Transfer-Encoding header field is present in a response and the "chunked" transfer-coding is not the final encoding,
    1351                the message-body length is determined by reading the connection until it is closed by the server. If a Transfer-Encoding header
    1352                field is present in a request and the "chunked" transfer-coding is not the final encoding, the message-body length cannot
    1353                be determined reliably; the server <em class="bcp14">MUST</em> respond with the 400 (Bad Request) status code and then close the connection.
    1354             </p>
    1355             <p>If a message is received with both a Transfer-Encoding header field and a Content-Length header field, the Transfer-Encoding
    1356                overrides the Content-Length. Such a message might indicate an attempt to perform request or response smuggling (bypass of
    1357                security-related checks on message routing or content) and thus ought to be handled as an error. The provided Content-Length <em class="bcp14">MUST</em> be removed, prior to forwarding the message downstream, or replaced with the real message-body length after the transfer-coding
    1358                is decoded.
    1359             </p>
    1360          </li>
    1361          <li>
    1362             <p>If a message is received without Transfer-Encoding and with either multiple Content-Length header fields having differing
    1363                field-values or a single Content-Length header field having an invalid value, then the message framing is invalid and <em class="bcp14">MUST</em> be treated as an error to prevent request or response smuggling. If this is a request message, the server <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code and then close the connection. If this is a response message received by a proxy,
    1364                the proxy <em class="bcp14">MUST</em> discard the received response, send a 502 (Bad Gateway) status code as its downstream response, and then close the connection.
    1365                If this is a response message received by a user-agent, it <em class="bcp14">MUST</em> be treated as an error by discarding the message and closing the connection.
    1366             </p>
    1367          </li>
    1368          <li>
    1369             <p>If a valid Content-Length header field is present without Transfer-Encoding, its decimal value defines the message-body length
    1370                in octets. If the actual number of octets sent in the message is less than the indicated Content-Length, the recipient <em class="bcp14">MUST</em> consider the message to be incomplete and treat the connection as no longer usable. If the actual number of octets sent in
    1371                the message is more than the indicated Content-Length, the recipient <em class="bcp14">MUST</em> only process the message-body up to the field value's number of octets; the remainder of the message <em class="bcp14">MUST</em> either be discarded or treated as the next message in a pipeline. For the sake of robustness, a user-agent <em class="bcp14">MAY</em> attempt to detect and correct such an error in message framing if it is parsing the response to the last request on a connection
    1372                and the connection has been closed by the server.
    1373             </p>
    1374          </li>
    1375          <li>
    1376             <p>If this is a request message and none of the above are true, then the message-body length is zero (no message-body is present).</p>
    1377          </li>
    1378          <li>
    1379             <p>Otherwise, this is a response message without a declared message-body length, so the message-body length is determined by
    1380                the number of octets received prior to the server closing the connection.
    1381             </p>
    1382          </li>
    1383       </ol>
    1384       <p id="rfc.section.3.3.p.11">Since there is no way to distinguish a successfully completed, close-delimited message from a partially-received message interrupted
    1385          by network failure, implementations <em class="bcp14">SHOULD</em> use encoding or length-delimited messages whenever possible. The close-delimiting feature exists primarily for backwards compatibility
    1386          with HTTP/1.0.
    1387       </p>
    1388       <p id="rfc.section.3.3.p.12">A server <em class="bcp14">MAY</em> reject a request that contains a message-body but not a Content-Length by responding with 411 (Length Required).
    1389       </p>
    1390       <p id="rfc.section.3.3.p.13">Unless a transfer-coding other than "chunked" has been applied, a client that sends a request containing a message-body <em class="bcp14">SHOULD</em> use a valid Content-Length header field if the message-body length is known in advance, rather than the "chunked" encoding,
    1391          since some existing services respond to "chunked" with a 411 (Length Required) status code even though they understand the
    1392          chunked encoding. This is typically because such services are implemented via a gateway that requires a content-length in
    1393          advance of being called and the server is unable or unwilling to buffer the entire request before processing.
    1394       </p>
    1395       <p id="rfc.section.3.3.p.14">A client that sends a request containing a message-body <em class="bcp14">MUST</em> include a valid Content-Length header field if it does not know the server will handle HTTP/1.1 (or later) requests; such
    1396          knowledge can be in the form of specific user configuration or by remembering the version of a prior received response.
    1397       </p>
    1398       <h2 id="rfc.section.3.4"><a href="#rfc.section.3.4">3.4</a>&nbsp;<a id="incomplete.messages" href="#incomplete.messages">Incomplete Messages</a></h2>
    1399       <p id="rfc.section.3.4.p.1">Request messages that are prematurely terminated, possibly due to a cancelled connection or a server-imposed time-out exception, <em class="bcp14">MUST</em> result in closure of the connection; sending an HTTP/1.1 error response prior to closing the connection is <em class="bcp14">OPTIONAL</em>.
    1400       </p>
    1401       <p id="rfc.section.3.4.p.2">Response messages that are prematurely terminated, usually by closure of the connection prior to receiving the expected number
    1402          of octets or by failure to decode a transfer-encoded message-body, <em class="bcp14">MUST</em> be recorded as incomplete. A response that terminates in the middle of the header block (before the empty line is received)
    1403          cannot be assumed to convey the full semantics of the response and <em class="bcp14">MUST</em> be treated as an error.
    1404       </p>
    1405       <p id="rfc.section.3.4.p.3">A message-body that uses the chunked transfer encoding is incomplete if the zero-sized chunk that terminates the encoding
    1406          has not been received. A message that uses a valid Content-Length is incomplete if the size of the message-body received (in
    1407          octets) is less than the value given by Content-Length. A response that has neither chunked transfer encoding nor Content-Length
    1408          is terminated by closure of the connection, and thus is considered complete regardless of the number of message-body octets
    1409          received, provided that the header block was received intact.
    1410       </p>
    1411       <p id="rfc.section.3.4.p.4">A user agent <em class="bcp14">MUST NOT</em> render an incomplete response message-body as if it were complete (i.e., some indication must be given to the user that an
    1412          error occurred). Cache requirements for incomplete responses are defined in <a href="p6-cache.html#response.cacheability" title="Response Cacheability">Section 2.1</a> of <a href="#Part6" id="rfc.xref.Part6.4"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
    1413       </p>
    1414       <p id="rfc.section.3.4.p.5">A server <em class="bcp14">MUST</em> read the entire request message-body or close the connection after sending its response, since otherwise the remaining data
    1415          on a persistent connection would be misinterpreted as the next request. Likewise, a client <em class="bcp14">MUST</em> read the entire response message-body if it intends to reuse the same connection for a subsequent request. Pipelining multiple
    1416          requests on a connection is described in <a href="#pipelining" title="Pipelining">Section&nbsp;7.1.2.2</a>.
    1417       </p>
    1418       <h2 id="rfc.section.3.5"><a href="#rfc.section.3.5">3.5</a>&nbsp;<a id="general.header.fields" href="#general.header.fields">General Header Fields</a></h2>
    1419       <p id="rfc.section.3.5.p.1">There are a few header fields which have general applicability for both request and response messages, but which do not apply
    1420          to the payload being transferred. These header fields apply only to the message being transmitted.
    1421       </p>
    1422       <div id="rfc.table.u.1">
    1423          <table class="tt full left" cellpadding="3" cellspacing="0">
    1424             <thead>
    1425                <tr>
    1426                   <th>Header Field Name</th>
    1427                   <th>Defined in...</th>
    1428                </tr>
    1429             </thead>
    1430             <tbody>
    1431                <tr>
    1432                   <td class="left">Connection</td>
    1433                   <td class="left"><a href="#header.connection" id="rfc.xref.header.connection.4" title="Connection">Section&nbsp;9.1</a></td>
    1434                </tr>
    1435                <tr>
    1436                   <td class="left">Date</td>
    1437                   <td class="left"><a href="#header.date" id="rfc.xref.header.date.2" title="Date">Section&nbsp;9.3</a></td>
    1438                </tr>
    1439                <tr>
    1440                   <td class="left">Trailer</td>
    1441                   <td class="left"><a href="#header.trailer" id="rfc.xref.header.trailer.1" title="Trailer">Section&nbsp;9.6</a></td>
    1442                </tr>
    1443                <tr>
    1444                   <td class="left">Transfer-Encoding</td>
    1445                   <td class="left"><a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.2" title="Transfer-Encoding">Section&nbsp;9.7</a></td>
    1446                </tr>
    1447                <tr>
    1448                   <td class="left">Upgrade</td>
    1449                   <td class="left"><a href="#header.upgrade" id="rfc.xref.header.upgrade.1" title="Upgrade">Section&nbsp;9.8</a></td>
    1450                </tr>
    1451                <tr>
    1452                   <td class="left">Via</td>
    1453                   <td class="left"><a href="#header.via" id="rfc.xref.header.via.2" title="Via">Section&nbsp;9.9</a></td>
    1454                </tr>
    1455             </tbody>
    1456          </table>
    1457       </div>
    1458       <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a id="request" href="#request">Request</a></h1>
    1459       <p id="rfc.section.4.p.1">A request message from a client to a server begins with a Request-Line, followed by zero or more header fields, an empty line
    1460          signifying the end of the header block, and an optional message body.
    1461       </p>
    1462       <div id="rfc.figure.u.27"></div><pre class="inline"><span id="rfc.iref.g.45"></span>  <a href="#request" class="smpl">Request</a>       = <a href="#request-line" class="smpl">Request-Line</a>              ; <a href="#request-line" title="Request-Line">Section&nbsp;4.1</a>
     1502      <div id="request">
     1503         <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a href="#request">Request</a></h1>
     1504         <p id="rfc.section.4.p.1">A request message from a client to a server begins with a Request-Line, followed by zero or more header fields, an empty line
     1505            signifying the end of the header block, and an optional message body.
     1506         </p>
     1507         <div id="rfc.figure.u.27"></div><pre class="inline"><span id="rfc.iref.g.45"></span>  <a href="#request" class="smpl">Request</a>       = <a href="#request-line" class="smpl">Request-Line</a>              ; <a href="#request-line" title="Request-Line">Section&nbsp;4.1</a>
    14631508                  *( <a href="#header.fields" class="smpl">header-field</a> <a href="#core.rules" class="smpl">CRLF</a> )    ; <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>
    14641509                  <a href="#core.rules" class="smpl">CRLF</a>
    14651510                  [ <a href="#message.body" class="smpl">message-body</a> ]          ; <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>
    1466 </pre><h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a>&nbsp;<a id="request-line" href="#request-line">Request-Line</a></h2>
    1467       <p id="rfc.section.4.1.p.1">The Request-Line begins with a method token, followed by a single space (SP), the request-target, another single space (SP),
    1468          the protocol version, and ending with CRLF.
    1469       </p>
    1470       <div id="rfc.figure.u.28"></div><pre class="inline"><span id="rfc.iref.g.46"></span>  <a href="#request-line" class="smpl">Request-Line</a>   = <a href="#method" class="smpl">Method</a> <a href="#core.rules" class="smpl">SP</a> <a href="#request-target" class="smpl">request-target</a> <a href="#core.rules" class="smpl">SP</a> <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">CRLF</a>
    1471 </pre><h3 id="rfc.section.4.1.1"><a href="#rfc.section.4.1.1">4.1.1</a>&nbsp;<a id="method" href="#method">Method</a></h3>
    1472       <p id="rfc.section.4.1.1.p.1">The Method token indicates the request method to be performed on the target resource. The request method is case-sensitive.</p>
    1473       <div id="rfc.figure.u.29"></div><pre class="inline"><span id="rfc.iref.g.47"></span>  <a href="#method" class="smpl">Method</a>         = <a href="#rule.token.separators" class="smpl">token</a>
    1474 </pre><h3 id="rfc.section.4.1.2"><a href="#rfc.section.4.1.2">4.1.2</a>&nbsp;<a id="request-target" href="#request-target">request-target</a></h3>
    1475       <p id="rfc.section.4.1.2.p.1">The request-target identifies the target resource upon which to apply the request. In most cases, the user agent is provided
    1476          a URI reference from which it determines an absolute URI for identifying the target resource. When a request to the resource
    1477          is initiated, all or part of that URI is used to construct the HTTP request-target.
    1478       </p>
    1479       <div id="rfc.figure.u.30"></div><pre class="inline"><span id="rfc.iref.g.48"></span>  <a href="#request-target" class="smpl">request-target</a> = "*"
     1511</pre><div id="request-line">
     1512            <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a>&nbsp;<a href="#request-line">Request-Line</a></h2>
     1513            <p id="rfc.section.4.1.p.1">The Request-Line begins with a method token, followed by a single space (SP), the request-target, another single space (SP),
     1514               the protocol version, and ending with CRLF.
     1515            </p>
     1516            <div id="rfc.figure.u.28"></div><pre class="inline"><span id="rfc.iref.g.46"></span>  <a href="#request-line" class="smpl">Request-Line</a>   = <a href="#method" class="smpl">Method</a> <a href="#core.rules" class="smpl">SP</a> <a href="#request-target" class="smpl">request-target</a> <a href="#core.rules" class="smpl">SP</a> <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">CRLF</a>
     1517</pre><div id="method">
     1518               <h3 id="rfc.section.4.1.1"><a href="#rfc.section.4.1.1">4.1.1</a>&nbsp;<a href="#method">Method</a></h3>
     1519               <p id="rfc.section.4.1.1.p.1">The Method token indicates the request method to be performed on the target resource. The request method is case-sensitive.</p>
     1520               <div id="rfc.figure.u.29"></div><pre class="inline"><span id="rfc.iref.g.47"></span>  <a href="#method" class="smpl">Method</a>         = <a href="#rule.token.separators" class="smpl">token</a>
     1521</pre></div>
     1522            <div id="request-target">
     1523               <h3 id="rfc.section.4.1.2"><a href="#rfc.section.4.1.2">4.1.2</a>&nbsp;<a href="#request-target">request-target</a></h3>
     1524               <p id="rfc.section.4.1.2.p.1">The request-target identifies the target resource upon which to apply the request. In most cases, the user agent is provided
     1525                  a URI reference from which it determines an absolute URI for identifying the target resource. When a request to the resource
     1526                  is initiated, all or part of that URI is used to construct the HTTP request-target.
     1527               </p>
     1528               <div id="rfc.figure.u.30"></div><pre class="inline"><span id="rfc.iref.g.48"></span>  <a href="#request-target" class="smpl">request-target</a> = "*"
    14801529                 / <a href="#uri" class="smpl">absolute-URI</a>
    14811530                 / ( <a href="#uri" class="smpl">path-absolute</a> [ "?" <a href="#uri" class="smpl">query</a> ] )
    14821531                 / <a href="#uri" class="smpl">authority</a>
    14831532</pre><p id="rfc.section.4.1.2.p.3">The four options for request-target are dependent on the nature of the request.</p>
    1484       <p id="rfc.section.4.1.2.p.4"><span id="rfc.iref.a.2"></span> The asterisk "*" form of request-target, which <em class="bcp14">MUST NOT</em> be used with any request method other than OPTIONS, means that the request applies to the server as a whole (the listening
    1485          process) rather than to a specific named resource at that server. For example,
    1486       </p>
    1487       <div id="rfc.figure.u.31"></div><pre class="text2">OPTIONS * HTTP/1.1
     1533               <p id="rfc.section.4.1.2.p.4"><span id="rfc.iref.a.2"></span> The asterisk "*" form of request-target, which <em class="bcp14">MUST NOT</em> be used with any request method other than OPTIONS, means that the request applies to the server as a whole (the listening
     1534                  process) rather than to a specific named resource at that server. For example,
     1535               </p>
     1536               <div id="rfc.figure.u.31"></div><pre class="text2">OPTIONS * HTTP/1.1
    14881537</pre><p id="rfc.section.4.1.2.p.6"><span id="rfc.iref.a.3"></span> The "absolute-URI" form is <em class="bcp14">REQUIRED</em> when the request is being made to a proxy. The proxy is requested to either forward the request or service it from a valid
    1489          cache, and then return the response. Note that the proxy <em class="bcp14">MAY</em> forward the request on to another proxy or directly to the server specified by the absolute-URI. In order to avoid request
    1490          loops, a proxy that forwards requests to other proxies <em class="bcp14">MUST</em> be able to recognize and exclude all of its own server names, including any aliases, local variations, and the numeric IP
    1491          address. An example Request-Line would be:
    1492       </p>
    1493       <div id="rfc.figure.u.32"></div><pre class="text2">GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
     1538                  cache, and then return the response. Note that the proxy <em class="bcp14">MAY</em> forward the request on to another proxy or directly to the server specified by the absolute-URI. In order to avoid request
     1539                  loops, a proxy that forwards requests to other proxies <em class="bcp14">MUST</em> be able to recognize and exclude all of its own server names, including any aliases, local variations, and the numeric IP
     1540                  address. An example Request-Line would be:
     1541               </p>
     1542               <div id="rfc.figure.u.32"></div><pre class="text2">GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
    14941543</pre><p id="rfc.section.4.1.2.p.8">To allow for transition to absolute-URIs in all requests in future versions of HTTP, all HTTP/1.1 servers <em class="bcp14">MUST</em> accept the absolute-URI form in requests, even though HTTP/1.1 clients will only generate them in requests to proxies.
    1495       </p>
    1496       <p id="rfc.section.4.1.2.p.9">If a proxy receives a host name that is not a fully qualified domain name, it <em class="bcp14">MAY</em> add its domain to the host name it received. If a proxy receives a fully qualified domain name, the proxy <em class="bcp14">MUST NOT</em> change the host name.
    1497       </p>
    1498       <p id="rfc.section.4.1.2.p.10"><span id="rfc.iref.a.4"></span> The "authority form" is only used by the CONNECT request method (<a href="p2-semantics.html#CONNECT" title="CONNECT">Section 7.9</a> of <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    1499       </p>
    1500       <p id="rfc.section.4.1.2.p.11"><span id="rfc.iref.o.3"></span> The most common form of request-target is that used when making a request to an origin server ("origin form"). In this case,
    1501          the absolute path and query components of the URI <em class="bcp14">MUST</em> be transmitted as the request-target, and the authority component <em class="bcp14">MUST</em> be transmitted in a Host header field. For example, a client wishing to retrieve a representation of the resource, as identified
    1502          above, directly from the origin server would open (or reuse) a TCP connection to port 80 of the host "www.example.org" and
    1503          send the lines:
    1504       </p>
    1505       <div id="rfc.figure.u.33"></div><pre class="text2">GET /pub/WWW/TheProject.html HTTP/1.1
     1544               </p>
     1545               <p id="rfc.section.4.1.2.p.9">If a proxy receives a host name that is not a fully qualified domain name, it <em class="bcp14">MAY</em> add its domain to the host name it received. If a proxy receives a fully qualified domain name, the proxy <em class="bcp14">MUST NOT</em> change the host name.
     1546               </p>
     1547               <p id="rfc.section.4.1.2.p.10"><span id="rfc.iref.a.4"></span> The "authority form" is only used by the CONNECT request method (<a href="p2-semantics.html#CONNECT" title="CONNECT">Section 7.9</a> of <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     1548               </p>
     1549               <p id="rfc.section.4.1.2.p.11"><span id="rfc.iref.o.3"></span> The most common form of request-target is that used when making a request to an origin server ("origin form"). In this case,
     1550                  the absolute path and query components of the URI <em class="bcp14">MUST</em> be transmitted as the request-target, and the authority component <em class="bcp14">MUST</em> be transmitted in a Host header field. For example, a client wishing to retrieve a representation of the resource, as identified
     1551                  above, directly from the origin server would open (or reuse) a TCP connection to port 80 of the host "www.example.org" and
     1552                  send the lines:
     1553               </p>
     1554               <div id="rfc.figure.u.33"></div><pre class="text2">GET /pub/WWW/TheProject.html HTTP/1.1
    15061555Host: www.example.org
    15071556</pre><p id="rfc.section.4.1.2.p.13">followed by the remainder of the Request. Note that the origin form of request-target always starts with an absolute path;
    1508          if the target resource's URI path is empty, then an absolute path of "/" <em class="bcp14">MUST</em> be provided in the request-target.
    1509       </p>
    1510       <p id="rfc.section.4.1.2.p.14">If a proxy receives an OPTIONS request with an absolute-URI form of request-target in which the URI has an empty path and
    1511          no query component, then the last proxy on the request chain <em class="bcp14">MUST</em> use a request-target of "*" when it forwards the request to the indicated origin server.
    1512       </p>
    1513       <div id="rfc.figure.u.34"></div>
    1514       <p>For example, the request</p><pre class="text2">OPTIONS http://www.example.org:8001 HTTP/1.1
     1557                  if the target resource's URI path is empty, then an absolute path of "/" <em class="bcp14">MUST</em> be provided in the request-target.
     1558               </p>
     1559               <p id="rfc.section.4.1.2.p.14">If a proxy receives an OPTIONS request with an absolute-URI form of request-target in which the URI has an empty path and
     1560                  no query component, then the last proxy on the request chain <em class="bcp14">MUST</em> use a request-target of "*" when it forwards the request to the indicated origin server.
     1561               </p>
     1562               <div id="rfc.figure.u.34"></div>
     1563               <p>For example, the request</p><pre class="text2">OPTIONS http://www.example.org:8001 HTTP/1.1
    15151564</pre><div id="rfc.figure.u.35"></div>
    1516       <p>would be forwarded by the final proxy as</p><pre class="text2">OPTIONS * HTTP/1.1
     1565               <p>would be forwarded by the final proxy as</p><pre class="text2">OPTIONS * HTTP/1.1
    15171566Host: www.example.org:8001
    1518 </pre>  <p>after connecting to port 8001 of host "www.example.org".</p>
    1519       <p id="rfc.section.4.1.2.p.17">The request-target is transmitted in the format specified in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>. If the request-target is percent-encoded (<a href="#RFC3986" id="rfc.xref.RFC3986.18"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-2.1">Section 2.1</a>), the origin server <em class="bcp14">MUST</em> decode the request-target in order to properly interpret the request. Servers <em class="bcp14">SHOULD</em> respond to invalid request-targets with an appropriate status code.
    1520       </p>
    1521       <p id="rfc.section.4.1.2.p.18">A non-transforming proxy <em class="bcp14">MUST NOT</em> rewrite the "path-absolute" part of the received request-target when forwarding it to the next inbound server, except as noted
    1522          above to replace a null path-absolute with "/" or "*".
    1523       </p>
    1524       <div class="note" id="rfc.section.4.1.2.p.19">
    1525          <p> <b>Note:</b> The "no rewrite" rule prevents the proxy from changing the meaning of the request when the origin server is improperly using
    1526             a non-reserved URI character for a reserved purpose. Implementors need to be aware that some pre-HTTP/1.1 proxies have been
    1527             known to rewrite the request-target.
    1528          </p>
     1567</pre><p>after connecting to port 8001 of host "www.example.org".</p>
     1568               <p id="rfc.section.4.1.2.p.17">The request-target is transmitted in the format specified in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>. If the request-target is percent-encoded (<a href="#RFC3986" id="rfc.xref.RFC3986.18"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-2.1">Section 2.1</a>), the origin server <em class="bcp14">MUST</em> decode the request-target in order to properly interpret the request. Servers <em class="bcp14">SHOULD</em> respond to invalid request-targets with an appropriate status code.
     1569               </p>
     1570               <p id="rfc.section.4.1.2.p.18">A non-transforming proxy <em class="bcp14">MUST NOT</em> rewrite the "path-absolute" part of the received request-target when forwarding it to the next inbound server, except as noted
     1571                  above to replace a null path-absolute with "/" or "*".
     1572               </p>
     1573               <div class="note" id="rfc.section.4.1.2.p.19">
     1574                  <p><b>Note:</b> The "no rewrite" rule prevents the proxy from changing the meaning of the request when the origin server is improperly using
     1575                     a non-reserved URI character for a reserved purpose. Implementors need to be aware that some pre-HTTP/1.1 proxies have been
     1576                     known to rewrite the request-target.
     1577                  </p>
     1578               </div>
     1579               <p id="rfc.section.4.1.2.p.20">HTTP does not place a pre-defined limit on the length of a request-target. A server <em class="bcp14">MUST</em> be prepared to receive URIs of unbounded length and respond with the 414 (URI Too Long) status code if the received request-target
     1580                  would be longer than the server wishes to handle (see <a href="p2-semantics.html#status.414" title="414 URI Too Long">Section 8.4.15</a> of <a href="#Part2" id="rfc.xref.Part2.3"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     1581               </p>
     1582               <p id="rfc.section.4.1.2.p.21">Various ad-hoc limitations on request-target length are found in practice. It is <em class="bcp14">RECOMMENDED</em> that all HTTP senders and recipients support request-target lengths of 8000 or more octets.
     1583               </p>
     1584               <div class="note" id="rfc.section.4.1.2.p.22">
     1585                  <p><b>Note:</b> Fragments (<a href="#RFC3986" id="rfc.xref.RFC3986.19"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-3.5">Section 3.5</a>) are not part of the request-target and thus will not be transmitted in an HTTP request.
     1586                  </p>
     1587               </div>
     1588            </div>
     1589         </div>
     1590         <div id="the.resource.identified.by.a.request">
     1591            <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a>&nbsp;<a href="#the.resource.identified.by.a.request">The Resource Identified by a Request</a></h2>
     1592            <p id="rfc.section.4.2.p.1">The exact resource identified by an Internet request is determined by examining both the request-target and the Host header
     1593               field.
     1594            </p>
     1595            <p id="rfc.section.4.2.p.2">An origin server that does not allow resources to differ by the requested host <em class="bcp14">MAY</em> ignore the Host header field value when determining the resource identified by an HTTP/1.1 request. (But see <a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses" title="Multi-homed Web Servers">Appendix&nbsp;A.1.1</a> for other requirements on Host support in HTTP/1.1.)
     1596            </p>
     1597            <p id="rfc.section.4.2.p.3">An origin server that does differentiate resources based on the host requested (sometimes referred to as virtual hosts or
     1598               vanity host names) <em class="bcp14">MUST</em> use the following rules for determining the requested resource on an HTTP/1.1 request:
     1599            </p>
     1600            <ol>
     1601               <li>If request-target is an absolute-URI, the host is part of the request-target. Any Host header field value in the request <em class="bcp14">MUST</em> be ignored.
     1602               </li>
     1603               <li>If the request-target is not an absolute-URI, and the request includes a Host header field, the host is determined by the
     1604                  Host header field value.
     1605               </li>
     1606               <li>If the host as determined by rule 1 or 2 is not a valid host on the server, the response <em class="bcp14">MUST</em> be a 400 (Bad Request) error message.
     1607               </li>
     1608            </ol>
     1609            <p id="rfc.section.4.2.p.4">Recipients of an HTTP/1.0 request that lacks a Host header field <em class="bcp14">MAY</em> attempt to use heuristics (e.g., examination of the URI path for something unique to a particular host) in order to determine
     1610               what exact resource is being requested.
     1611            </p>
     1612         </div>
     1613         <div id="effective.request.uri">
     1614            <div id="rfc.iref.e.1"></div>
     1615            <div id="rfc.iref.t.4"></div>
     1616            <h2 id="rfc.section.4.3"><a href="#rfc.section.4.3">4.3</a>&nbsp;<a href="#effective.request.uri">Effective Request URI</a></h2>
     1617            <p id="rfc.section.4.3.p.1">HTTP requests often do not carry the absolute URI (<a href="#RFC3986" id="rfc.xref.RFC3986.20"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="https://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>) for the target resource; instead, the URI needs to be inferred from the request-target, Host header field, and connection
     1618               context. The result of this process is called the "effective request URI". The "target resource" is the resource identified
     1619               by the effective request URI.
     1620            </p>
     1621            <p id="rfc.section.4.3.p.2">If the request-target is an absolute-URI, then the effective request URI is the request-target.</p>
     1622            <p id="rfc.section.4.3.p.3">If the request-target uses the path-absolute form or the asterisk form, and the Host header field is present, then the effective
     1623               request URI is constructed by concatenating
     1624            </p>
     1625            <p id="rfc.section.4.3.p.4"></p>
     1626            <ul>
     1627               <li>the scheme name: "http" if the request was received over an insecure TCP connection, or "https" when received over a SSL/TLS-secured
     1628                  TCP connection,
     1629               </li>
     1630               <li>the octet sequence "://",</li>
     1631               <li>the authority component, as specified in the Host header field (<a href="#header.host" id="rfc.xref.header.host.1" title="Host">Section&nbsp;9.4</a>), and
     1632               </li>
     1633               <li>the request-target obtained from the Request-Line, unless the request-target is just the asterisk "*".</li>
     1634            </ul>
     1635            <p id="rfc.section.4.3.p.5">If the request-target uses the path-absolute form or the asterisk form, and the Host header field is not present, then the
     1636               effective request URI is undefined.
     1637            </p>
     1638            <p id="rfc.section.4.3.p.6">Otherwise, when request-target uses the authority form, the effective request URI is undefined.</p>
     1639            <div id="rfc.figure.u.36"></div>
     1640            <p>Example 1: the effective request URI for the message</p><pre class="text">GET /pub/WWW/TheProject.html HTTP/1.1
     1641Host: www.example.org:8080
     1642</pre><p>(received over an insecure TCP connection) is "http", plus "://", plus the authority component "www.example.org:8080", plus
     1643               the request-target "/pub/WWW/TheProject.html", thus "http://www.example.org:8080/pub/WWW/TheProject.html".
     1644            </p>
     1645            <div id="rfc.figure.u.37"></div>
     1646            <p>Example 2: the effective request URI for the message</p><pre class="text">OPTIONS * HTTP/1.1
     1647Host: www.example.org
     1648</pre><p>(received over an SSL/TLS secured TCP connection) is "https", plus "://", plus the authority component "www.example.org",
     1649               thus "https://www.example.org".
     1650            </p>
     1651            <p id="rfc.section.4.3.p.9">Effective request URIs are compared using the rules described in <a href="#uri.comparison" title="http and https URI Normalization and Comparison">Section&nbsp;2.7.3</a>, except that empty path components <em class="bcp14">MUST NOT</em> be treated as equivalent to an absolute path of "/".
     1652            </p>
     1653         </div>
    15291654      </div>
    1530       <p id="rfc.section.4.1.2.p.20">HTTP does not place a pre-defined limit on the length of a request-target. A server <em class="bcp14">MUST</em> be prepared to receive URIs of unbounded length and respond with the 414 (URI Too Long) status code if the received request-target
    1531          would be longer than the server wishes to handle (see <a href="p2-semantics.html#status.414" title="414 URI Too Long">Section 8.4.15</a> of <a href="#Part2" id="rfc.xref.Part2.3"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    1532       </p>
    1533       <p id="rfc.section.4.1.2.p.21">Various ad-hoc limitations on request-target length are found in practice. It is <em class="bcp14">RECOMMENDED</em> that all HTTP senders and recipients support request-target lengths of 8000 or more octets.
    1534       </p>
    1535       <div class="note" id="rfc.section.4.1.2.p.22">
    1536          <p> <b>Note:</b> Fragments (<a href="#RFC3986" id="rfc.xref.RFC3986.19"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-3.5">Section 3.5</a>) are not part of the request-target and thus will not be transmitted in an HTTP request.
    1537          </p>
    1538       </div>
    1539       <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a>&nbsp;<a id="the.resource.identified.by.a.request" href="#the.resource.identified.by.a.request">The Resource Identified by a Request</a></h2>
    1540       <p id="rfc.section.4.2.p.1">The exact resource identified by an Internet request is determined by examining both the request-target and the Host header
    1541          field.
    1542       </p>
    1543       <p id="rfc.section.4.2.p.2">An origin server that does not allow resources to differ by the requested host <em class="bcp14">MAY</em> ignore the Host header field value when determining the resource identified by an HTTP/1.1 request. (But see <a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses" title="Multi-homed Web Servers">Appendix&nbsp;A.1.1</a> for other requirements on Host support in HTTP/1.1.)
    1544       </p>
    1545       <p id="rfc.section.4.2.p.3">An origin server that does differentiate resources based on the host requested (sometimes referred to as virtual hosts or
    1546          vanity host names) <em class="bcp14">MUST</em> use the following rules for determining the requested resource on an HTTP/1.1 request:
    1547       </p>
    1548       <ol>
    1549          <li>If request-target is an absolute-URI, the host is part of the request-target. Any Host header field value in the request <em class="bcp14">MUST</em> be ignored.
    1550          </li>
    1551          <li>If the request-target is not an absolute-URI, and the request includes a Host header field, the host is determined by the
    1552             Host header field value.
    1553          </li>
    1554          <li>If the host as determined by rule 1 or 2 is not a valid host on the server, the response <em class="bcp14">MUST</em> be a 400 (Bad Request) error message.
    1555          </li>
    1556       </ol>
    1557       <p id="rfc.section.4.2.p.4">Recipients of an HTTP/1.0 request that lacks a Host header field <em class="bcp14">MAY</em> attempt to use heuristics (e.g., examination of the URI path for something unique to a particular host) in order to determine
    1558          what exact resource is being requested.
    1559       </p>
    1560       <div id="rfc.iref.e.1"></div>
    1561       <div id="rfc.iref.t.4"></div>
    1562       <h2 id="rfc.section.4.3"><a href="#rfc.section.4.3">4.3</a>&nbsp;<a id="effective.request.uri" href="#effective.request.uri">Effective Request URI</a></h2>
    1563       <p id="rfc.section.4.3.p.1">HTTP requests often do not carry the absolute URI (<a href="#RFC3986" id="rfc.xref.RFC3986.20"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>) for the target resource; instead, the URI needs to be inferred from the request-target, Host header field, and connection
    1564          context. The result of this process is called the "effective request URI". The "target resource" is the resource identified
    1565          by the effective request URI.
    1566       </p>
    1567       <p id="rfc.section.4.3.p.2">If the request-target is an absolute-URI, then the effective request URI is the request-target.</p>
    1568       <p id="rfc.section.4.3.p.3">If the request-target uses the path-absolute form or the asterisk form, and the Host header field is present, then the effective
    1569          request URI is constructed by concatenating
    1570       </p>
    1571       <p id="rfc.section.4.3.p.4"> </p>
    1572       <ul>
    1573          <li>the scheme name: "http" if the request was received over an insecure TCP connection, or "https" when received over a SSL/TLS-secured
    1574             TCP connection,
    1575          </li>
    1576          <li>the octet sequence "://",</li>
    1577          <li>the authority component, as specified in the Host header field (<a href="#header.host" id="rfc.xref.header.host.1" title="Host">Section&nbsp;9.4</a>), and
    1578          </li>
    1579          <li>the request-target obtained from the Request-Line, unless the request-target is just the asterisk "*".</li>
    1580       </ul>
    1581       <p id="rfc.section.4.3.p.5">If the request-target uses the path-absolute form or the asterisk form, and the Host header field is not present, then the
    1582          effective request URI is undefined.
    1583       </p>
    1584       <p id="rfc.section.4.3.p.6">Otherwise, when request-target uses the authority form, the effective request URI is undefined.</p>
    1585       <div id="rfc.figure.u.36"></div>
    1586       <p>Example 1: the effective request URI for the message</p>  <pre class="text">GET /pub/WWW/TheProject.html HTTP/1.1
    1587 Host: www.example.org:8080
    1588 </pre>  <p>(received over an insecure TCP connection) is "http", plus "://", plus the authority component "www.example.org:8080", plus
    1589          the request-target "/pub/WWW/TheProject.html", thus "http://www.example.org:8080/pub/WWW/TheProject.html".
    1590       </p>
    1591       <div id="rfc.figure.u.37"></div>
    1592       <p>Example 2: the effective request URI for the message</p>  <pre class="text">OPTIONS * HTTP/1.1
    1593 Host: www.example.org
    1594 </pre>  <p>(received over an SSL/TLS secured TCP connection) is "https", plus "://", plus the authority component "www.example.org",
    1595          thus "https://www.example.org".
    1596       </p>
    1597       <p id="rfc.section.4.3.p.9">Effective request URIs are compared using the rules described in <a href="#uri.comparison" title="http and https URI Normalization and Comparison">Section&nbsp;2.7.3</a>, except that empty path components <em class="bcp14">MUST NOT</em> be treated as equivalent to an absolute path of "/".
    1598       </p>
    1599       <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="response" href="#response">Response</a></h1>
    1600       <p id="rfc.section.5.p.1">After receiving and interpreting a request message, a server responds with an HTTP response message.</p>
    1601       <div id="rfc.figure.u.38"></div><pre class="inline"><span id="rfc.iref.g.49"></span>  <a href="#response" class="smpl">Response</a>      = <a href="#status-line" class="smpl">Status-Line</a>               ; <a href="#status-line" title="Status-Line">Section&nbsp;5.1</a>
     1655      <div id="response">
     1656         <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a href="#response">Response</a></h1>
     1657         <p id="rfc.section.5.p.1">After receiving and interpreting a request message, a server responds with an HTTP response message.</p>
     1658         <div id="rfc.figure.u.38"></div><pre class="inline"><span id="rfc.iref.g.49"></span>  <a href="#response" class="smpl">Response</a>      = <a href="#status-line" class="smpl">Status-Line</a>               ; <a href="#status-line" title="Status-Line">Section&nbsp;5.1</a>
    16021659                  *( <a href="#header.fields" class="smpl">header-field</a> <a href="#core.rules" class="smpl">CRLF</a> )    ; <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>
    16031660                  <a href="#core.rules" class="smpl">CRLF</a>
    16041661                  [ <a href="#message.body" class="smpl">message-body</a> ]          ; <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>
    1605 </pre><h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;<a id="status-line" href="#status-line">Status-Line</a></h2>
    1606       <p id="rfc.section.5.1.p.1">The first line of a Response message is the Status-Line, consisting of the protocol version, a space (SP), the status code,
    1607          another space, a possibly-empty textual phrase describing the status code, and ending with CRLF.
    1608       </p>
    1609       <div id="rfc.figure.u.39"></div><pre class="inline"><span id="rfc.iref.g.50"></span>  <a href="#status-line" class="smpl">Status-Line</a> = <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a> <a href="#core.rules" class="smpl">CRLF</a>
    1610 </pre><h3 id="rfc.section.5.1.1"><a href="#rfc.section.5.1.1">5.1.1</a>&nbsp;<a id="status.code.and.reason.phrase" href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></h3>
    1611       <p id="rfc.section.5.1.1.p.1">The Status-Code element is a 3-digit integer result code of the attempt to understand and satisfy the request. These codes
    1612          are fully defined in <a href="p2-semantics.html#status.codes" title="Status Code Definitions">Section 8</a> of <a href="#Part2" id="rfc.xref.Part2.4"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>. The Reason Phrase exists for the sole purpose of providing a textual description associated with the numeric status code,
    1613          out of deference to earlier Internet application protocols that were more frequently used with interactive text clients. A
    1614          client <em class="bcp14">SHOULD</em> ignore the content of the Reason Phrase.
    1615       </p>
    1616       <p id="rfc.section.5.1.1.p.2">The first digit of the Status-Code defines the class of response. The last two digits do not have any categorization role.
    1617          There are 5 values for the first digit:
    1618       </p>
    1619       <ul>
    1620          <li>1xx: Informational - Request received, continuing process</li>
    1621          <li>2xx: Success - The action was successfully received, understood, and accepted</li>
    1622          <li>3xx: Redirection - Further action must be taken in order to complete the request</li>
    1623          <li>4xx: Client Error - The request contains bad syntax or cannot be fulfilled</li>
    1624          <li>5xx: Server Error - The server failed to fulfill an apparently valid request</li>
    1625       </ul>
    1626       <div id="rfc.figure.u.40"></div><pre class="inline"><span id="rfc.iref.g.51"></span><span id="rfc.iref.g.52"></span>  <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a>    = 3<a href="#core.rules" class="smpl">DIGIT</a>
     1662</pre><div id="status-line">
     1663            <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;<a href="#status-line">Status-Line</a></h2>
     1664            <p id="rfc.section.5.1.p.1">The first line of a Response message is the Status-Line, consisting of the protocol version, a space (SP), the status code,
     1665               another space, a possibly-empty textual phrase describing the status code, and ending with CRLF.
     1666            </p>
     1667            <div id="rfc.figure.u.39"></div><pre class="inline"><span id="rfc.iref.g.50"></span>  <a href="#status-line" class="smpl">Status-Line</a> = <a href="#http.version" class="smpl">HTTP-Version</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a> <a href="#core.rules" class="smpl">SP</a> <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a> <a href="#core.rules" class="smpl">CRLF</a>
     1668</pre><div id="status.code.and.reason.phrase">
     1669               <h3 id="rfc.section.5.1.1"><a href="#rfc.section.5.1.1">5.1.1</a>&nbsp;<a href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></h3>
     1670               <p id="rfc.section.5.1.1.p.1">The Status-Code element is a 3-digit integer result code of the attempt to understand and satisfy the request. These codes
     1671                  are fully defined in <a href="p2-semantics.html#status.codes" title="Status Code Definitions">Section 8</a> of <a href="#Part2" id="rfc.xref.Part2.4"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>. The Reason Phrase exists for the sole purpose of providing a textual description associated with the numeric status code,
     1672                  out of deference to earlier Internet application protocols that were more frequently used with interactive text clients. A
     1673                  client <em class="bcp14">SHOULD</em> ignore the content of the Reason Phrase.
     1674               </p>
     1675               <p id="rfc.section.5.1.1.p.2">The first digit of the Status-Code defines the class of response. The last two digits do not have any categorization role.
     1676                  There are 5 values for the first digit:
     1677               </p>
     1678               <ul>
     1679                  <li>1xx: Informational - Request received, continuing process</li>
     1680                  <li>2xx: Success - The action was successfully received, understood, and accepted</li>
     1681                  <li>3xx: Redirection - Further action must be taken in order to complete the request</li>
     1682                  <li>4xx: Client Error - The request contains bad syntax or cannot be fulfilled</li>
     1683                  <li>5xx: Server Error - The server failed to fulfill an apparently valid request</li>
     1684               </ul>
     1685               <div id="rfc.figure.u.40"></div><pre class="inline"><span id="rfc.iref.g.51"></span><span id="rfc.iref.g.52"></span>  <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a>    = 3<a href="#core.rules" class="smpl">DIGIT</a>
    16271686  <a href="#status.code.and.reason.phrase" class="smpl">Reason-Phrase</a>  = *( <a href="#core.rules" class="smpl">WSP</a> / <a href="#core.rules" class="smpl">VCHAR</a> / <a href="#rule.quoted-string" class="smpl">obs-text</a> )
    1628 </pre><h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a>&nbsp;<a id="protocol.parameters" href="#protocol.parameters">Protocol Parameters</a></h1>
    1629       <h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a>&nbsp;<a id="date.time.formats.full.date" href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></h2>
    1630       <p id="rfc.section.6.1.p.1">HTTP applications have historically allowed three different formats for date/time stamps. However, the preferred format is
    1631          a fixed-length subset of that defined by <a href="#RFC1123" id="rfc.xref.RFC1123.1"><cite title="Requirements for Internet Hosts - Application and Support">[RFC1123]</cite></a>:
    1632       </p>
    1633       <div id="rfc.figure.u.41"></div><pre class="text">Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 1123
     1687</pre></div>
     1688         </div>
     1689      </div>
     1690      <div id="protocol.parameters">
     1691         <h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a>&nbsp;<a href="#protocol.parameters">Protocol Parameters</a></h1>
     1692         <div id="date.time.formats.full.date">
     1693            <h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a>&nbsp;<a href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></h2>
     1694            <p id="rfc.section.6.1.p.1">HTTP applications have historically allowed three different formats for date/time stamps. However, the preferred format is
     1695               a fixed-length subset of that defined by <a href="#RFC1123" id="rfc.xref.RFC1123.1"><cite title="Requirements for Internet Hosts - Application and Support">[RFC1123]</cite></a>:
     1696            </p>
     1697            <div id="rfc.figure.u.41"></div><pre class="text">Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 1123
    16341698</pre><p id="rfc.section.6.1.p.3">The other formats are described here only for compatibility with obsolete implementations.</p>
    1635       <div id="rfc.figure.u.42"></div><pre class="text">Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format
     1699            <div id="rfc.figure.u.42"></div><pre class="text">Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format
    16361700Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
    16371701</pre><p id="rfc.section.6.1.p.5">HTTP/1.1 clients and servers that parse a date value <em class="bcp14">MUST</em> accept all three formats (for compatibility with HTTP/1.0), though they <em class="bcp14">MUST</em> only generate the RFC 1123 format for representing HTTP-date values in header fields.
    1638       </p>
    1639       <p id="rfc.section.6.1.p.6">All HTTP date/time stamps <em class="bcp14">MUST</em> be represented in Greenwich Mean Time (GMT), without exception. For the purposes of HTTP, GMT is exactly equal to UTC (Coordinated
    1640          Universal Time). This is indicated in the first two formats by the inclusion of "GMT" as the three-letter abbreviation for
    1641          time zone, and <em class="bcp14">MUST</em> be assumed when reading the asctime format. HTTP-date is case sensitive and <em class="bcp14">MUST NOT</em> include additional whitespace beyond that specifically included as SP in the grammar.
    1642       </p>
    1643       <div id="rfc.figure.u.43"></div><pre class="inline"><span id="rfc.iref.g.53"></span>  <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a>    = <a href="#preferred.date.format" class="smpl">rfc1123-date</a> / <a href="#obsolete.date.formats" class="smpl">obs-date</a>
     1702            </p>
     1703            <p id="rfc.section.6.1.p.6">All HTTP date/time stamps <em class="bcp14">MUST</em> be represented in Greenwich Mean Time (GMT), without exception. For the purposes of HTTP, GMT is exactly equal to UTC (Coordinated
     1704               Universal Time). This is indicated in the first two formats by the inclusion of "GMT" as the three-letter abbreviation for
     1705               time zone, and <em class="bcp14">MUST</em> be assumed when reading the asctime format. HTTP-date is case sensitive and <em class="bcp14">MUST NOT</em> include additional whitespace beyond that specifically included as SP in the grammar.
     1706            </p>
     1707            <div id="rfc.figure.u.43"></div><pre class="inline"><span id="rfc.iref.g.53"></span>  <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a>    = <a href="#preferred.date.format" class="smpl">rfc1123-date</a> / <a href="#obsolete.date.formats" class="smpl">obs-date</a>
    16441708</pre><div id="preferred.date.format">
    1645          <p id="rfc.section.6.1.p.8">                    Preferred format:</p>
    1646       </div>
    1647       <div id="rfc.figure.u.44"></div><pre class="inline"><span id="rfc.iref.g.54"></span><span id="rfc.iref.g.55"></span><span id="rfc.iref.g.56"></span><span id="rfc.iref.g.57"></span><span id="rfc.iref.g.58"></span><span id="rfc.iref.g.59"></span><span id="rfc.iref.g.60"></span><span id="rfc.iref.g.61"></span><span id="rfc.iref.g.62"></span><span id="rfc.iref.g.63"></span><span id="rfc.iref.g.64"></span><span id="rfc.iref.g.65"></span>  <a href="#preferred.date.format" class="smpl">rfc1123-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> "," <a href="#core.rules" class="smpl">SP</a> date1 <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a>
     1709               <p id="rfc.section.6.1.p.8">          Preferred format:</p>
     1710            </div>
     1711            <div id="rfc.figure.u.44"></div><pre class="inline"><span id="rfc.iref.g.54"></span><span id="rfc.iref.g.55"></span><span id="rfc.iref.g.56"></span><span id="rfc.iref.g.57"></span><span id="rfc.iref.g.58"></span><span id="rfc.iref.g.59"></span><span id="rfc.iref.g.60"></span><span id="rfc.iref.g.61"></span><span id="rfc.iref.g.62"></span><span id="rfc.iref.g.63"></span><span id="rfc.iref.g.64"></span><span id="rfc.iref.g.65"></span>  <a href="#preferred.date.format" class="smpl">rfc1123-date</a> = <a href="#preferred.date.format" class="smpl">day-name</a> "," <a href="#core.rules" class="smpl">SP</a> date1 <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a>
    16481712  ; fixed length subset of the format defined in
    1649   ; <a href="http://tools.ietf.org/html/rfc1123#section-5.2.14">Section 5.2.14</a> of <a href="#RFC1123" id="rfc.xref.RFC1123.2"><cite title="Requirements for Internet Hosts - Application and Support">[RFC1123]</cite></a>
     1713  ; <a href="https://tools.ietf.org/html/rfc1123#section-5.2.14">Section 5.2.14</a> of <a href="#RFC1123" id="rfc.xref.RFC1123.2"><cite title="Requirements for Internet Hosts - Application and Support">[RFC1123]</cite></a>
    16501714 
    16511715  <a href="#preferred.date.format" class="smpl">day-name</a>     = %x4D.6F.6E ; "Mon", case-sensitive
     
    16831747  <a href="#preferred.date.format" class="smpl">minute</a>       = 2<a href="#core.rules" class="smpl">DIGIT</a>               
    16841748  <a href="#preferred.date.format" class="smpl">second</a>       = 2<a href="#core.rules" class="smpl">DIGIT</a>               
    1685 </pre><p id="rfc.section.6.1.p.10">The semantics of <a href="#preferred.date.format" class="smpl">day-name</a>, <a href="#preferred.date.format" class="smpl">day</a>, <a href="#preferred.date.format" class="smpl">month</a>, <a href="#preferred.date.format" class="smpl">year</a>, and <a href="#preferred.date.format" class="smpl">time-of-day</a> are the same as those defined for the RFC 5322 constructs with the corresponding name (<a href="#RFC5322" id="rfc.xref.RFC5322.3"><cite title="Internet Message Format">[RFC5322]</cite></a>, <a href="http://tools.ietf.org/html/rfc5322#section-3.3">Section 3.3</a>).
    1686       </p>
    1687       <div id="obsolete.date.formats">
    1688          <p id="rfc.section.6.1.p.11">                Obsolete formats:</p>
    1689       </div>
    1690       <div id="rfc.figure.u.45"></div><pre class="inline"><span id="rfc.iref.g.66"></span>  <a href="#obsolete.date.formats" class="smpl">obs-date</a>     = <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> / <a href="#obsolete.date.formats" class="smpl">asctime-date</a>
     1749</pre><p id="rfc.section.6.1.p.10">The semantics of <a href="#preferred.date.format" class="smpl">day-name</a>, <a href="#preferred.date.format" class="smpl">day</a>, <a href="#preferred.date.format" class="smpl">month</a>, <a href="#preferred.date.format" class="smpl">year</a>, and <a href="#preferred.date.format" class="smpl">time-of-day</a> are the same as those defined for the RFC 5322 constructs with the corresponding name (<a href="#RFC5322" id="rfc.xref.RFC5322.3"><cite title="Internet Message Format">[RFC5322]</cite></a>, <a href="https://tools.ietf.org/html/rfc5322#section-3.3">Section 3.3</a>).
     1750            </p>
     1751            <div id="obsolete.date.formats">
     1752               <p id="rfc.section.6.1.p.11">        Obsolete formats:</p>
     1753            </div>
     1754            <div id="rfc.figure.u.45"></div><pre class="inline"><span id="rfc.iref.g.66"></span>  <a href="#obsolete.date.formats" class="smpl">obs-date</a>     = <a href="#obsolete.date.formats" class="smpl">rfc850-date</a> / <a href="#obsolete.date.formats" class="smpl">asctime-date</a>
    16911755</pre><div id="rfc.figure.u.46"></div><pre class="inline"><span id="rfc.iref.g.67"></span>  <a href="#obsolete.date.formats" class="smpl">rfc850-date</a>  = <a href="#obsolete.date.formats" class="smpl">day-name-l</a> "," <a href="#core.rules" class="smpl">SP</a> <a href="#obsolete.date.formats" class="smpl">date2</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">time-of-day</a> <a href="#core.rules" class="smpl">SP</a> <a href="#preferred.date.format" class="smpl">GMT</a>
    16921756  <a href="#obsolete.date.formats" class="smpl">date2</a>        = <a href="#preferred.date.format" class="smpl">day</a> "-" <a href="#preferred.date.format" class="smpl">month</a> "-" 2<a href="#core.rules" class="smpl">DIGIT</a>
     
    17031767  <a href="#obsolete.date.formats" class="smpl">date3</a>        = <a href="#preferred.date.format" class="smpl">month</a> <a href="#core.rules" class="smpl">SP</a> ( 2<a href="#core.rules" class="smpl">DIGIT</a> / ( <a href="#core.rules" class="smpl">SP</a> 1<a href="#core.rules" class="smpl">DIGIT</a> ))
    17041768                 ; month day (e.g., Jun  2)
    1705 </pre><div class="note" id="rfc.section.6.1.p.15">
    1706          <p> <b>Note:</b> Recipients of date values are encouraged to be robust in accepting date values that might have been sent by non-HTTP applications,
    1707             as is sometimes the case when retrieving or posting messages via proxies/gateways to SMTP or NNTP.
    1708          </p>
    1709       </div>
    1710       <div class="note" id="rfc.section.6.1.p.16">
    1711          <p> <b>Note:</b> HTTP requirements for the date/time stamp format apply only to their usage within the protocol stream. Clients and servers
    1712             are not required to use these formats for user presentation, request logging, etc.
    1713          </p>
    1714       </div>
    1715       <h2 id="rfc.section.6.2"><a href="#rfc.section.6.2">6.2</a>&nbsp;<a id="transfer.codings" href="#transfer.codings">Transfer Codings</a></h2>
    1716       <p id="rfc.section.6.2.p.1">Transfer-coding values are used to indicate an encoding transformation that has been, can be, or might need to be applied
    1717          to a payload body in order to ensure "safe transport" through the network. This differs from a content coding in that the
    1718          transfer-coding is a property of the message rather than a property of the representation that is being transferred.
    1719       </p>
    1720       <div id="rfc.figure.u.48"></div><pre class="inline"><span id="rfc.iref.g.69"></span><span id="rfc.iref.g.70"></span>  <a href="#transfer.codings" class="smpl">transfer-coding</a>         = "chunked" ; <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>
     1769</pre><div class="note" id="rfc.section.6.1.p.15">
     1770               <p><b>Note:</b> Recipients of date values are encouraged to be robust in accepting date values that might have been sent by non-HTTP applications,
     1771                  as is sometimes the case when retrieving or posting messages via proxies/gateways to SMTP or NNTP.
     1772               </p>
     1773            </div>
     1774            <div class="note" id="rfc.section.6.1.p.16">
     1775               <p><b>Note:</b> HTTP requirements for the date/time stamp format apply only to their usage within the protocol stream. Clients and servers
     1776                  are not required to use these formats for user presentation, request logging, etc.
     1777               </p>
     1778            </div>
     1779         </div>
     1780         <div id="transfer.codings">
     1781            <h2 id="rfc.section.6.2"><a href="#rfc.section.6.2">6.2</a>&nbsp;<a href="#transfer.codings">Transfer Codings</a></h2>
     1782            <p id="rfc.section.6.2.p.1">Transfer-coding values are used to indicate an encoding transformation that has been, can be, or might need to be applied
     1783               to a payload body in order to ensure "safe transport" through the network. This differs from a content coding in that the
     1784               transfer-coding is a property of the message rather than a property of the representation that is being transferred.
     1785            </p>
     1786            <div id="rfc.figure.u.48"></div><pre class="inline"><span id="rfc.iref.g.69"></span><span id="rfc.iref.g.70"></span>  <a href="#transfer.codings" class="smpl">transfer-coding</a>         = "chunked" ; <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>
    17211787                          / "compress" ; <a href="#compress.coding" title="Compress Coding">Section&nbsp;6.2.2.1</a>
    17221788                          / "deflate" ; <a href="#deflate.coding" title="Deflate Coding">Section&nbsp;6.2.2.2</a>
     
    17251791  <a href="#transfer.codings" class="smpl">transfer-extension</a>      = <a href="#rule.token.separators" class="smpl">token</a> *( <a href="#rule.whitespace" class="smpl">OWS</a> ";" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#rule.parameter" class="smpl">transfer-parameter</a> )
    17261792</pre><div id="rule.parameter">
    1727          <p id="rfc.section.6.2.p.3">      Parameters are in the form of attribute/value pairs.</p>
    1728       </div>
    1729       <div id="rfc.figure.u.49"></div><pre class="inline"><span id="rfc.iref.g.71"></span><span id="rfc.iref.g.72"></span><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span>  <a href="#rule.parameter" class="smpl">transfer-parameter</a>      = <a href="#rule.parameter" class="smpl">attribute</a> <a href="#rule.whitespace" class="smpl">BWS</a> "=" <a href="#rule.whitespace" class="smpl">BWS</a> <a href="#rule.parameter" class="smpl">value</a>
     1793               <p id="rfc.section.6.2.p.3">   Parameters are in the form of attribute/value pairs.</p>
     1794            </div>
     1795            <div id="rfc.figure.u.49"></div><pre class="inline"><span id="rfc.iref.g.71"></span><span id="rfc.iref.g.72"></span><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span>  <a href="#rule.parameter" class="smpl">transfer-parameter</a>      = <a href="#rule.parameter" class="smpl">attribute</a> <a href="#rule.whitespace" class="smpl">BWS</a> "=" <a href="#rule.whitespace" class="smpl">BWS</a> <a href="#rule.parameter" class="smpl">value</a>
    17301796  <a href="#rule.parameter" class="smpl">attribute</a>               = <a href="#rule.token.separators" class="smpl">token</a>
    17311797  <a href="#rule.parameter" class="smpl">value</a>                   = <a href="#rule.token.separators" class="smpl">word</a>
    17321798</pre><p id="rfc.section.6.2.p.5">All transfer-coding values are case-insensitive. HTTP/1.1 uses transfer-coding values in the TE header field (<a href="#header.te" id="rfc.xref.header.te.1" title="TE">Section&nbsp;9.5</a>) and in the Transfer-Encoding header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.3" title="Transfer-Encoding">Section&nbsp;9.7</a>).
    1733       </p>
    1734       <p id="rfc.section.6.2.p.6">Transfer-codings are analogous to the Content-Transfer-Encoding values of MIME, which were designed to enable safe transport
    1735          of binary data over a 7-bit transport service (<a href="#RFC2045" id="rfc.xref.RFC2045.2"><cite title="Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies">[RFC2045]</cite></a>, <a href="http://tools.ietf.org/html/rfc2045#section-6">Section 6</a>). However, safe transport has a different focus for an 8bit-clean transfer protocol. In HTTP, the only unsafe characteristic
    1736          of message-bodies is the difficulty in determining the exact message body length (<a href="#message.body" title="Message Body">Section&nbsp;3.3</a>), or the desire to encrypt data over a shared transport.
    1737       </p>
    1738       <p id="rfc.section.6.2.p.7">A server that receives a request message with a transfer-coding it does not understand <em class="bcp14">SHOULD</em> respond with 501 (Not Implemented) and then close the connection. A server <em class="bcp14">MUST NOT</em> send transfer-codings to an HTTP/1.0 client.
    1739       </p>
    1740       <div id="rfc.iref.c.6"></div>
    1741       <div id="rfc.iref.c.7"></div>
    1742       <h3 id="rfc.section.6.2.1"><a href="#rfc.section.6.2.1">6.2.1</a>&nbsp;<a id="chunked.encoding" href="#chunked.encoding">Chunked Transfer Coding</a></h3>
    1743       <p id="rfc.section.6.2.1.p.1">The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size
    1744          indicator, followed by an <em class="bcp14">OPTIONAL</em> trailer containing header fields. This allows dynamically produced content to be transferred along with the information necessary
    1745          for the recipient to verify that it has received the full message.
    1746       </p>
    1747       <div id="rfc.figure.u.50"></div><pre class="inline"><span id="rfc.iref.g.76"></span><span id="rfc.iref.g.77"></span><span id="rfc.iref.g.78"></span><span id="rfc.iref.g.79"></span><span id="rfc.iref.g.80"></span><span id="rfc.iref.g.81"></span><span id="rfc.iref.g.82"></span><span id="rfc.iref.g.83"></span><span id="rfc.iref.g.84"></span><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span>  <a href="#chunked.encoding" class="smpl">Chunked-Body</a>   = *<a href="#chunked.encoding" class="smpl">chunk</a>
     1799            </p>
     1800            <p id="rfc.section.6.2.p.6">Transfer-codings are analogous to the Content-Transfer-Encoding values of MIME, which were designed to enable safe transport
     1801               of binary data over a 7-bit transport service (<a href="#RFC2045" id="rfc.xref.RFC2045.2"><cite title="Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies">[RFC2045]</cite></a>, <a href="https://tools.ietf.org/html/rfc2045#section-6">Section 6</a>). However, safe transport has a different focus for an 8bit-clean transfer protocol. In HTTP, the only unsafe characteristic
     1802               of message-bodies is the difficulty in determining the exact message body length (<a href="#message.body" title="Message Body">Section&nbsp;3.3</a>), or the desire to encrypt data over a shared transport.
     1803            </p>
     1804            <p id="rfc.section.6.2.p.7">A server that receives a request message with a transfer-coding it does not understand <em class="bcp14">SHOULD</em> respond with 501 (Not Implemented) and then close the connection. A server <em class="bcp14">MUST NOT</em> send transfer-codings to an HTTP/1.0 client.
     1805            </p>
     1806            <div id="chunked.encoding">
     1807               <div id="rfc.iref.c.6"></div>
     1808               <div id="rfc.iref.c.7"></div>
     1809               <h3 id="rfc.section.6.2.1"><a href="#rfc.section.6.2.1">6.2.1</a>&nbsp;<a href="#chunked.encoding">Chunked Transfer Coding</a></h3>
     1810               <p id="rfc.section.6.2.1.p.1">The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size
     1811                  indicator, followed by an <em class="bcp14">OPTIONAL</em> trailer containing header fields. This allows dynamically produced content to be transferred along with the information necessary
     1812                  for the recipient to verify that it has received the full message.
     1813               </p>
     1814               <div id="rfc.figure.u.50"></div><pre class="inline"><span id="rfc.iref.g.76"></span><span id="rfc.iref.g.77"></span><span id="rfc.iref.g.78"></span><span id="rfc.iref.g.79"></span><span id="rfc.iref.g.80"></span><span id="rfc.iref.g.81"></span><span id="rfc.iref.g.82"></span><span id="rfc.iref.g.83"></span><span id="rfc.iref.g.84"></span><span id="rfc.iref.g.85"></span><span id="rfc.iref.g.86"></span>  <a href="#chunked.encoding" class="smpl">Chunked-Body</a>   = *<a href="#chunked.encoding" class="smpl">chunk</a>
    17481815                   <a href="#chunked.encoding" class="smpl">last-chunk</a>
    17491816                   <a href="#chunked.encoding" class="smpl">trailer-part</a>
     
    17671834                 ; <a href="#core.rules" class="smpl">WSP</a> / &lt;<a href="#core.rules" class="smpl">VCHAR</a> except <a href="#core.rules" class="smpl">DQUOTE</a> and "\"&gt; / <a href="#rule.quoted-string" class="smpl">obs-text</a>
    17681835</pre><p id="rfc.section.6.2.1.p.3">The chunk-size field is a string of hex digits indicating the size of the chunk-data in octets. The chunked encoding is ended
    1769          by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line.
    1770       </p>
    1771       <p id="rfc.section.6.2.1.p.4">The trailer allows the sender to include additional HTTP header fields at the end of the message. The Trailer header field
    1772          can be used to indicate which header fields are included in a trailer (see <a href="#header.trailer" id="rfc.xref.header.trailer.2" title="Trailer">Section&nbsp;9.6</a>).
    1773       </p>
    1774       <p id="rfc.section.6.2.1.p.5">A server using chunked transfer-coding in a response <em class="bcp14">MUST NOT</em> use the trailer for any header fields unless at least one of the following is true:
    1775       </p>
    1776       <ol>
    1777          <li>the request included a TE header field that indicates "trailers" is acceptable in the transfer-coding of the response, as
    1778             described in <a href="#header.te" id="rfc.xref.header.te.2" title="TE">Section&nbsp;9.5</a>; or,
    1779          </li>
    1780          <li>the trailer fields consist entirely of optional metadata, and the recipient could use the message (in a manner acceptable
    1781             to the server where the field originated) without receiving it. In other words, the server that generated the header (often
    1782             but not always the origin server) is willing to accept the possibility that the trailer fields might be silently discarded
    1783             along the path to the client.
    1784          </li>
    1785       </ol>
    1786       <p id="rfc.section.6.2.1.p.6">This requirement prevents an interoperability failure when the message is being received by an HTTP/1.1 (or later) proxy and
    1787          forwarded to an HTTP/1.0 recipient. It avoids a situation where compliance with the protocol would have necessitated a possibly
    1788          infinite buffer on the proxy.
    1789       </p>
    1790       <p id="rfc.section.6.2.1.p.7">A process for decoding the "chunked" transfer-coding can be represented in pseudo-code as:</p>
    1791       <div id="rfc.figure.u.51"></div><pre class="text">  length := 0
     1836                  by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line.
     1837               </p>
     1838               <p id="rfc.section.6.2.1.p.4">The trailer allows the sender to include additional HTTP header fields at the end of the message. The Trailer header field
     1839                  can be used to indicate which header fields are included in a trailer (see <a href="#header.trailer" id="rfc.xref.header.trailer.2" title="Trailer">Section&nbsp;9.6</a>).
     1840               </p>
     1841               <p id="rfc.section.6.2.1.p.5">A server using chunked transfer-coding in a response <em class="bcp14">MUST NOT</em> use the trailer for any header fields unless at least one of the following is true:
     1842               </p>
     1843               <ol>
     1844                  <li>the request included a TE header field that indicates "trailers" is acceptable in the transfer-coding of the response, as
     1845                     described in <a href="#header.te" id="rfc.xref.header.te.2" title="TE">Section&nbsp;9.5</a>; or,
     1846                  </li>
     1847                  <li>the trailer fields consist entirely of optional metadata, and the recipient could use the message (in a manner acceptable
     1848                     to the server where the field originated) without receiving it. In other words, the server that generated the header (often
     1849                     but not always the origin server) is willing to accept the possibility that the trailer fields might be silently discarded
     1850                     along the path to the client.
     1851                  </li>
     1852               </ol>
     1853               <p id="rfc.section.6.2.1.p.6">This requirement prevents an interoperability failure when the message is being received by an HTTP/1.1 (or later) proxy and
     1854                  forwarded to an HTTP/1.0 recipient. It avoids a situation where compliance with the protocol would have necessitated a possibly
     1855                  infinite buffer on the proxy.
     1856               </p>
     1857               <p id="rfc.section.6.2.1.p.7">A process for decoding the "chunked" transfer-coding can be represented in pseudo-code as:</p>
     1858               <div id="rfc.figure.u.51"></div><pre class="text">  length := 0
    17921859  read chunk-size, chunk-ext (if any) and CRLF
    17931860  while (chunk-size &gt; 0) {
     
    18051872  Remove "chunked" from Transfer-Encoding
    18061873</pre><p id="rfc.section.6.2.1.p.9">All HTTP/1.1 applications <em class="bcp14">MUST</em> be able to receive and decode the "chunked" transfer-coding and <em class="bcp14">MUST</em> ignore chunk-ext extensions they do not understand.
    1807       </p>
    1808       <p id="rfc.section.6.2.1.p.10">Since "chunked" is the only transfer-coding required to be understood by HTTP/1.1 recipients, it plays a crucial role in delimiting
    1809          messages on a persistent connection. Whenever a transfer-coding is applied to a payload body in a request, the final transfer-coding
    1810          applied <em class="bcp14">MUST</em> be "chunked". If a transfer-coding is applied to a response payload body, then either the final transfer-coding applied <em class="bcp14">MUST</em> be "chunked" or the message <em class="bcp14">MUST</em> be terminated by closing the connection. When the "chunked" transfer-coding is used, it <em class="bcp14">MUST</em> be the last transfer-coding applied to form the message-body. The "chunked" transfer-coding <em class="bcp14">MUST NOT</em> be applied more than once in a message-body.
    1811       </p>
    1812       <h3 id="rfc.section.6.2.2"><a href="#rfc.section.6.2.2">6.2.2</a>&nbsp;<a id="compression.codings" href="#compression.codings">Compression Codings</a></h3>
    1813       <p id="rfc.section.6.2.2.p.1">The codings defined below can be used to compress the payload of a message.</p>
    1814       <div class="note" id="rfc.section.6.2.2.p.2">
    1815          <p> <b>Note:</b> Use of program names for the identification of encoding formats is not desirable and is discouraged for future encodings.
    1816             Their use here is representative of historical practice, not good design.
    1817          </p>
    1818       </div>
    1819       <div class="note" id="rfc.section.6.2.2.p.3">
    1820          <p> <b>Note:</b> For compatibility with previous implementations of HTTP, applications <em class="bcp14">SHOULD</em> consider "x-gzip" and "x-compress" to be equivalent to "gzip" and "compress" respectively.
    1821          </p>
    1822       </div>
    1823       <div id="rfc.iref.c.8"></div>
    1824       <div id="rfc.iref.c.9"></div>
    1825       <h4 id="rfc.section.6.2.2.1"><a href="#rfc.section.6.2.2.1">6.2.2.1</a>&nbsp;<a id="compress.coding" href="#compress.coding">Compress Coding</a></h4>
    1826       <p id="rfc.section.6.2.2.1.p.1">The "compress" format is produced by the common UNIX file compression program "compress". This format is an adaptive Lempel-Ziv-Welch
    1827          coding (LZW).
    1828       </p>
    1829       <div id="rfc.iref.d.2"></div>
    1830       <div id="rfc.iref.c.10"></div>
    1831       <h4 id="rfc.section.6.2.2.2"><a href="#rfc.section.6.2.2.2">6.2.2.2</a>&nbsp;<a id="deflate.coding" href="#deflate.coding">Deflate Coding</a></h4>
    1832       <p id="rfc.section.6.2.2.2.p.1">The "deflate" format is defined as the "deflate" compression mechanism (described in <a href="#RFC1951" id="rfc.xref.RFC1951.1"><cite title="DEFLATE Compressed Data Format Specification version 1.3">[RFC1951]</cite></a>) used inside the "zlib" data format (<a href="#RFC1950" id="rfc.xref.RFC1950.1"><cite title="ZLIB Compressed Data Format Specification version 3.3">[RFC1950]</cite></a>).
    1833       </p>
    1834       <div class="note" id="rfc.section.6.2.2.2.p.2">
    1835          <p> <b>Note:</b> Some incorrect implementations send the "deflate" compressed data without the zlib wrapper.
    1836          </p>
    1837       </div>
    1838       <div id="rfc.iref.g.87"></div>
    1839       <div id="rfc.iref.c.11"></div>
    1840       <h4 id="rfc.section.6.2.2.3"><a href="#rfc.section.6.2.2.3">6.2.2.3</a>&nbsp;<a id="gzip.coding" href="#gzip.coding">Gzip Coding</a></h4>
    1841       <p id="rfc.section.6.2.2.3.p.1">The "gzip" format is produced by the file compression program "gzip" (GNU zip), as described in <a href="#RFC1952" id="rfc.xref.RFC1952.1"><cite title="GZIP file format specification version 4.3">[RFC1952]</cite></a>. This format is a Lempel-Ziv coding (LZ77) with a 32 bit CRC.
    1842       </p>
    1843       <h3 id="rfc.section.6.2.3"><a href="#rfc.section.6.2.3">6.2.3</a>&nbsp;<a id="transfer.coding.registry" href="#transfer.coding.registry">Transfer Coding Registry</a></h3>
    1844       <p id="rfc.section.6.2.3.p.1">The HTTP Transfer Coding Registry defines the name space for the transfer coding names.</p>
    1845       <p id="rfc.section.6.2.3.p.2">Registrations <em class="bcp14">MUST</em> include the following fields:
    1846       </p>
    1847       <ul>
    1848          <li>Name</li>
    1849          <li>Description</li>
    1850          <li>Pointer to specification text</li>
    1851       </ul>
    1852       <p id="rfc.section.6.2.3.p.3">Names of transfer codings <em class="bcp14">MUST NOT</em> overlap with names of content codings (<a href="p3-payload.html#content.codings" title="Content Codings">Section 2.2</a> of <a href="#Part3" id="rfc.xref.Part3.2"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), unless the encoding transformation is identical (as it is the case for the compression codings defined in <a href="#compression.codings" title="Compression Codings">Section&nbsp;6.2.2</a>).
    1853       </p>
    1854       <p id="rfc.section.6.2.3.p.4">Values to be added to this name space require a specification (see "Specification Required" in <a href="http://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a> of <a href="#RFC5226" id="rfc.xref.RFC5226.1"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>), and <em class="bcp14">MUST</em> conform to the purpose of transfer coding defined in this section.
    1855       </p>
    1856       <p id="rfc.section.6.2.3.p.5">The registry itself is maintained at &lt;<a href="http://www.iana.org/assignments/http-parameters">http://www.iana.org/assignments/http-parameters</a>&gt;.
    1857       </p>
    1858       <h2 id="rfc.section.6.3"><a href="#rfc.section.6.3">6.3</a>&nbsp;<a id="product.tokens" href="#product.tokens">Product Tokens</a></h2>
    1859       <p id="rfc.section.6.3.p.1">Product tokens are used to allow communicating applications to identify themselves by software name and version. Most fields
    1860          using product tokens also allow sub-products which form a significant part of the application to be listed, separated by whitespace.
    1861          By convention, the products are listed in order of their significance for identifying the application.
    1862       </p>
    1863       <div id="rfc.figure.u.52"></div><pre class="inline"><span id="rfc.iref.g.88"></span><span id="rfc.iref.g.89"></span>  <a href="#product.tokens" class="smpl">product</a>         = <a href="#rule.token.separators" class="smpl">token</a> ["/" <a href="#product.tokens" class="smpl">product-version</a>]
     1874               </p>
     1875               <p id="rfc.section.6.2.1.p.10">Since "chunked" is the only transfer-coding required to be understood by HTTP/1.1 recipients, it plays a crucial role in delimiting
     1876                  messages on a persistent connection. Whenever a transfer-coding is applied to a payload body in a request, the final transfer-coding
     1877                  applied <em class="bcp14">MUST</em> be "chunked". If a transfer-coding is applied to a response payload body, then either the final transfer-coding applied <em class="bcp14">MUST</em> be "chunked" or the message <em class="bcp14">MUST</em> be terminated by closing the connection. When the "chunked" transfer-coding is used, it <em class="bcp14">MUST</em> be the last transfer-coding applied to form the message-body. The "chunked" transfer-coding <em class="bcp14">MUST NOT</em> be applied more than once in a message-body.
     1878               </p>
     1879            </div>
     1880            <div id="compression.codings">
     1881               <h3 id="rfc.section.6.2.2"><a href="#rfc.section.6.2.2">6.2.2</a>&nbsp;<a href="#compression.codings">Compression Codings</a></h3>
     1882               <p id="rfc.section.6.2.2.p.1">The codings defined below can be used to compress the payload of a message.</p>
     1883               <div class="note" id="rfc.section.6.2.2.p.2">
     1884                  <p><b>Note:</b> Use of program names for the identification of encoding formats is not desirable and is discouraged for future encodings.
     1885                     Their use here is representative of historical practice, not good design.
     1886                  </p>
     1887               </div>
     1888               <div class="note" id="rfc.section.6.2.2.p.3">
     1889                  <p><b>Note:</b> For compatibility with previous implementations of HTTP, applications <em class="bcp14">SHOULD</em> consider "x-gzip" and "x-compress" to be equivalent to "gzip" and "compress" respectively.
     1890                  </p>
     1891               </div>
     1892               <div id="compress.coding">
     1893                  <div id="rfc.iref.c.8"></div>
     1894                  <div id="rfc.iref.c.9"></div>
     1895                  <h4 id="rfc.section.6.2.2.1"><a href="#rfc.section.6.2.2.1">6.2.2.1</a>&nbsp;<a href="#compress.coding">Compress Coding</a></h4>
     1896                  <p id="rfc.section.6.2.2.1.p.1">The "compress" format is produced by the common UNIX file compression program "compress". This format is an adaptive Lempel-Ziv-Welch
     1897                     coding (LZW).
     1898                  </p>
     1899               </div>
     1900               <div id="deflate.coding">
     1901                  <div id="rfc.iref.d.2"></div>
     1902                  <div id="rfc.iref.c.10"></div>
     1903                  <h4 id="rfc.section.6.2.2.2"><a href="#rfc.section.6.2.2.2">6.2.2.2</a>&nbsp;<a href="#deflate.coding">Deflate Coding</a></h4>
     1904                  <p id="rfc.section.6.2.2.2.p.1">The "deflate" format is defined as the "deflate" compression mechanism (described in <a href="#RFC1951" id="rfc.xref.RFC1951.1"><cite title="DEFLATE Compressed Data Format Specification version 1.3">[RFC1951]</cite></a>) used inside the "zlib" data format (<a href="#RFC1950" id="rfc.xref.RFC1950.1"><cite title="ZLIB Compressed Data Format Specification version 3.3">[RFC1950]</cite></a>).
     1905                  </p>
     1906                  <div class="note" id="rfc.section.6.2.2.2.p.2">
     1907                     <p><b>Note:</b> Some incorrect implementations send the "deflate" compressed data without the zlib wrapper.
     1908                     </p>
     1909                  </div>
     1910               </div>
     1911               <div id="gzip.coding">
     1912                  <div id="rfc.iref.g.87"></div>
     1913                  <div id="rfc.iref.c.11"></div>
     1914                  <h4 id="rfc.section.6.2.2.3"><a href="#rfc.section.6.2.2.3">6.2.2.3</a>&nbsp;<a href="#gzip.coding">Gzip Coding</a></h4>
     1915                  <p id="rfc.section.6.2.2.3.p.1">The "gzip" format is produced by the file compression program "gzip" (GNU zip), as described in <a href="#RFC1952" id="rfc.xref.RFC1952.1"><cite title="GZIP file format specification version 4.3">[RFC1952]</cite></a>. This format is a Lempel-Ziv coding (LZ77) with a 32 bit CRC.
     1916                  </p>
     1917               </div>
     1918            </div>
     1919            <div id="transfer.coding.registry">
     1920               <h3 id="rfc.section.6.2.3"><a href="#rfc.section.6.2.3">6.2.3</a>&nbsp;<a href="#transfer.coding.registry">Transfer Coding Registry</a></h3>
     1921               <p id="rfc.section.6.2.3.p.1">The HTTP Transfer Coding Registry defines the name space for the transfer coding names.</p>
     1922               <p id="rfc.section.6.2.3.p.2">Registrations <em class="bcp14">MUST</em> include the following fields:
     1923               </p>
     1924               <ul>
     1925                  <li>Name</li>
     1926                  <li>Description</li>
     1927                  <li>Pointer to specification text</li>
     1928               </ul>
     1929               <p id="rfc.section.6.2.3.p.3">Names of transfer codings <em class="bcp14">MUST NOT</em> overlap with names of content codings (<a href="p3-payload.html#content.codings" title="Content Codings">Section 2.2</a> of <a href="#Part3" id="rfc.xref.Part3.2"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), unless the encoding transformation is identical (as it is the case for the compression codings defined in <a href="#compression.codings" title="Compression Codings">Section&nbsp;6.2.2</a>).
     1930               </p>
     1931               <p id="rfc.section.6.2.3.p.4">Values to be added to this name space require a specification (see "Specification Required" in <a href="https://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a> of <a href="#RFC5226" id="rfc.xref.RFC5226.1"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>), and <em class="bcp14">MUST</em> conform to the purpose of transfer coding defined in this section.
     1932               </p>
     1933               <p id="rfc.section.6.2.3.p.5">The registry itself is maintained at &lt;<a href="http://www.iana.org/assignments/http-parameters">http://www.iana.org/assignments/http-parameters</a>&gt;.
     1934               </p>
     1935            </div>
     1936         </div>
     1937         <div id="product.tokens">
     1938            <h2 id="rfc.section.6.3"><a href="#rfc.section.6.3">6.3</a>&nbsp;<a href="#product.tokens">Product Tokens</a></h2>
     1939            <p id="rfc.section.6.3.p.1">Product tokens are used to allow communicating applications to identify themselves by software name and version. Most fields
     1940               using product tokens also allow sub-products which form a significant part of the application to be listed, separated by whitespace.
     1941               By convention, the products are listed in order of their significance for identifying the application.
     1942            </p>
     1943            <div id="rfc.figure.u.52"></div><pre class="inline"><span id="rfc.iref.g.88"></span><span id="rfc.iref.g.89"></span>  <a href="#product.tokens" class="smpl">product</a>         = <a href="#rule.token.separators" class="smpl">token</a> ["/" <a href="#product.tokens" class="smpl">product-version</a>]
    18641944  <a href="#product.tokens" class="smpl">product-version</a> = <a href="#rule.token.separators" class="smpl">token</a>
    18651945</pre><p id="rfc.section.6.3.p.3">Examples:</p>
    1866       <div id="rfc.figure.u.53"></div><pre class="text">  User-Agent: CERN-LineMode/2.15 libwww/2.17b3
     1946            <div id="rfc.figure.u.53"></div><pre class="text">  User-Agent: CERN-LineMode/2.15 libwww/2.17b3
    18671947  Server: Apache/0.8.4
    18681948</pre><p id="rfc.section.6.3.p.5">Product tokens <em class="bcp14">SHOULD</em> be short and to the point. They <em class="bcp14">MUST NOT</em> be used for advertising or other non-essential information. Although any token octet <em class="bcp14">MAY</em> appear in a product-version, this token <em class="bcp14">SHOULD</em> only be used for a version identifier (i.e., successive versions of the same product <em class="bcp14">SHOULD</em> only differ in the product-version portion of the product value).
    1869       </p>
    1870       <h2 id="rfc.section.6.4"><a href="#rfc.section.6.4">6.4</a>&nbsp;<a id="quality.values" href="#quality.values">Quality Values</a></h2>
    1871       <p id="rfc.section.6.4.p.1">Both transfer codings (TE request header field, <a href="#header.te" id="rfc.xref.header.te.3" title="TE">Section&nbsp;9.5</a>) and content negotiation (<a href="p3-payload.html#content.negotiation" title="Content Negotiation">Section 5</a> of <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) use short "floating point" numbers to indicate the relative importance ("weight") of various negotiable parameters. A weight
    1872          is normalized to a real number in the range 0 through 1, where 0 is the minimum and 1 the maximum value. If a parameter has
    1873          a quality value of 0, then content with this parameter is "not acceptable" for the client. HTTP/1.1 applications <em class="bcp14">MUST NOT</em> generate more than three digits after the decimal point. User configuration of these values <em class="bcp14">SHOULD</em> also be limited in this fashion.
    1874       </p>
    1875       <div id="rfc.figure.u.54"></div><pre class="inline"><span id="rfc.iref.g.90"></span>  <a href="#quality.values" class="smpl">qvalue</a>         = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] )
     1949            </p>
     1950         </div>
     1951         <div id="quality.values">
     1952            <h2 id="rfc.section.6.4"><a href="#rfc.section.6.4">6.4</a>&nbsp;<a href="#quality.values">Quality Values</a></h2>
     1953            <p id="rfc.section.6.4.p.1">Both transfer codings (TE request header field, <a href="#header.te" id="rfc.xref.header.te.3" title="TE">Section&nbsp;9.5</a>) and content negotiation (<a href="p3-payload.html#content.negotiation" title="Content Negotiation">Section 5</a> of <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) use short "floating point" numbers to indicate the relative importance ("weight") of various negotiable parameters. A weight
     1954               is normalized to a real number in the range 0 through 1, where 0 is the minimum and 1 the maximum value. If a parameter has
     1955               a quality value of 0, then content with this parameter is "not acceptable" for the client. HTTP/1.1 applications <em class="bcp14">MUST NOT</em> generate more than three digits after the decimal point. User configuration of these values <em class="bcp14">SHOULD</em> also be limited in this fashion.
     1956            </p>
     1957            <div id="rfc.figure.u.54"></div><pre class="inline"><span id="rfc.iref.g.90"></span>  <a href="#quality.values" class="smpl">qvalue</a>         = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] )
    18761958                 / ( "1" [ "." 0*3("0") ] )
    1877 </pre><div class="note" id="rfc.section.6.4.p.3">
    1878          <p> <b>Note:</b> "Quality values" is a misnomer, since these values merely represent relative degradation in desired quality.
    1879          </p>
     1959</pre><div class="note" id="rfc.section.6.4.p.3">
     1960               <p><b>Note:</b> "Quality values" is a misnomer, since these values merely represent relative degradation in desired quality.
     1961               </p>
     1962            </div>
     1963         </div>
    18801964      </div>
    1881       <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a>&nbsp;<a id="connections" href="#connections">Connections</a></h1>
    1882       <h2 id="rfc.section.7.1"><a href="#rfc.section.7.1">7.1</a>&nbsp;<a id="persistent.connections" href="#persistent.connections">Persistent Connections</a></h2>
    1883       <h3 id="rfc.section.7.1.1"><a href="#rfc.section.7.1.1">7.1.1</a>&nbsp;<a id="persistent.purpose" href="#persistent.purpose">Purpose</a></h3>
    1884       <p id="rfc.section.7.1.1.p.1">Prior to persistent connections, a separate TCP connection was established for each request, increasing the load on HTTP servers
    1885          and causing congestion on the Internet. The use of inline images and other associated data often requires a client to make
    1886          multiple requests of the same server in a short amount of time. Analysis of these performance problems and results from a
    1887          prototype implementation are available <a href="#Pad1995" id="rfc.xref.Pad1995.1"><cite title="Improving HTTP Latency">[Pad1995]</cite></a>  <a href="#Spe" id="rfc.xref.Spe.1"><cite title="Analysis of HTTP Performance Problems">[Spe]</cite></a>. Implementation experience and measurements of actual HTTP/1.1 implementations show good results <a href="#Nie1997" id="rfc.xref.Nie1997.1"><cite title="Network Performance Effects of HTTP/1.1, CSS1, and PNG">[Nie1997]</cite></a>. Alternatives have also been explored, for example, T/TCP <a href="#Tou1998" id="rfc.xref.Tou1998.1"><cite title="Analysis of HTTP Performance">[Tou1998]</cite></a>.
    1888       </p>
    1889       <p id="rfc.section.7.1.1.p.2">Persistent HTTP connections have a number of advantages: </p>
    1890       <ul>
    1891          <li>By opening and closing fewer TCP connections, CPU time is saved in routers and hosts (clients, servers, proxies, gateways,
    1892             tunnels, or caches), and memory used for TCP protocol control blocks can be saved in hosts.
    1893          </li>
    1894          <li>HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without
    1895             waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time.
    1896          </li>
    1897          <li>Network congestion is reduced by reducing the number of packets caused by TCP opens, and by allowing TCP sufficient time to
    1898             determine the congestion state of the network.
    1899          </li>
    1900          <li>Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake.</li>
    1901          <li>HTTP can evolve more gracefully, since errors can be reported without the penalty of closing the TCP connection. Clients using
    1902             future versions of HTTP might optimistically try a new feature, but if communicating with an older server, retry with old
    1903             semantics after an error is reported.
    1904          </li>
    1905       </ul>
    1906       <p id="rfc.section.7.1.1.p.3">HTTP implementations <em class="bcp14">SHOULD</em> implement persistent connections.
    1907       </p>
    1908       <h3 id="rfc.section.7.1.2"><a href="#rfc.section.7.1.2">7.1.2</a>&nbsp;<a id="persistent.overall" href="#persistent.overall">Overall Operation</a></h3>
    1909       <p id="rfc.section.7.1.2.p.1">A significant difference between HTTP/1.1 and earlier versions of HTTP is that persistent connections are the default behavior
    1910          of any HTTP connection. That is, unless otherwise indicated, the client <em class="bcp14">SHOULD</em> assume that the server will maintain a persistent connection, even after error responses from the server.
    1911       </p>
    1912       <p id="rfc.section.7.1.2.p.2">Persistent connections provide a mechanism by which a client and a server can signal the close of a TCP connection. This signaling
    1913          takes place using the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.5" title="Connection">Section&nbsp;9.1</a>). Once a close has been signaled, the client <em class="bcp14">MUST NOT</em> send any more requests on that connection.
    1914       </p>
    1915       <h4 id="rfc.section.7.1.2.1"><a href="#rfc.section.7.1.2.1">7.1.2.1</a>&nbsp;<a id="persistent.negotiation" href="#persistent.negotiation">Negotiation</a></h4>
    1916       <p id="rfc.section.7.1.2.1.p.1">An HTTP/1.1 server <em class="bcp14">MAY</em> assume that a HTTP/1.1 client intends to maintain a persistent connection unless a Connection header field including the connection-token
    1917          "close" was sent in the request. If the server chooses to close the connection immediately after sending the response, it <em class="bcp14">SHOULD</em> send a Connection header field including the connection-token "close".
    1918       </p>
    1919       <p id="rfc.section.7.1.2.1.p.2">An HTTP/1.1 client <em class="bcp14">MAY</em> expect a connection to remain open, but would decide to keep it open based on whether the response from a server contains
    1920          a Connection header field with the connection-token close. In case the client does not want to maintain a connection for more
    1921          than that request, it <em class="bcp14">SHOULD</em> send a Connection header field including the connection-token close.
    1922       </p>
    1923       <p id="rfc.section.7.1.2.1.p.3">If either the client or the server sends the close token in the Connection header field, that request becomes the last one
    1924          for the connection.
    1925       </p>
    1926       <p id="rfc.section.7.1.2.1.p.4">Clients and servers <em class="bcp14">SHOULD NOT</em> assume that a persistent connection is maintained for HTTP versions less than 1.1 unless it is explicitly signaled. See <a href="#compatibility.with.http.1.0.persistent.connections" title="Keep-Alive Connections">Appendix&nbsp;A.1.2</a> for more information on backward compatibility with HTTP/1.0 clients.
    1927       </p>
    1928       <p id="rfc.section.7.1.2.1.p.5">In order to remain persistent, all messages on the connection <em class="bcp14">MUST</em> have a self-defined message length (i.e., one not defined by closure of the connection), as described in <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>.
    1929       </p>
    1930       <h4 id="rfc.section.7.1.2.2"><a href="#rfc.section.7.1.2.2">7.1.2.2</a>&nbsp;<a id="pipelining" href="#pipelining">Pipelining</a></h4>
    1931       <p id="rfc.section.7.1.2.2.p.1">A client that supports persistent connections <em class="bcp14">MAY</em> "pipeline" its requests (i.e., send multiple requests without waiting for each response). A server <em class="bcp14">MUST</em> send its responses to those requests in the same order that the requests were received.
    1932       </p>
    1933       <p id="rfc.section.7.1.2.2.p.2">Clients which assume persistent connections and pipeline immediately after connection establishment <em class="bcp14">SHOULD</em> be prepared to retry their connection if the first pipelined attempt fails. If a client does such a retry, it <em class="bcp14">MUST NOT</em> pipeline before it knows the connection is persistent. Clients <em class="bcp14">MUST</em> also be prepared to resend their requests if the server closes the connection before sending all of the corresponding responses.
    1934       </p>
    1935       <p id="rfc.section.7.1.2.2.p.3">Clients <em class="bcp14">SHOULD NOT</em> pipeline requests using non-idempotent request methods or non-idempotent sequences of request methods (see <a href="p2-semantics.html#idempotent.methods" title="Idempotent Methods">Section 7.1.2</a> of <a href="#Part2" id="rfc.xref.Part2.5"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Otherwise, a premature termination of the transport connection could lead to indeterminate results. A client wishing to
    1936          send a non-idempotent request <em class="bcp14">SHOULD</em> wait to send that request until it has received the response status line for the previous request.
    1937       </p>
    1938       <h3 id="rfc.section.7.1.3"><a href="#rfc.section.7.1.3">7.1.3</a>&nbsp;<a id="persistent.proxy" href="#persistent.proxy">Proxy Servers</a></h3>
    1939       <p id="rfc.section.7.1.3.p.1">It is especially important that proxies correctly implement the properties of the Connection header field as specified in <a href="#header.connection" id="rfc.xref.header.connection.6" title="Connection">Section&nbsp;9.1</a>.
    1940       </p>
    1941       <p id="rfc.section.7.1.3.p.2">The proxy server <em class="bcp14">MUST</em> signal persistent connections separately with its clients and the origin servers (or other proxy servers) that it connects
    1942          to. Each persistent connection applies to only one transport link.
    1943       </p>
    1944       <p id="rfc.section.7.1.3.p.3">A proxy server <em class="bcp14">MUST NOT</em> establish a HTTP/1.1 persistent connection with an HTTP/1.0 client (but see <a href="http://tools.ietf.org/html/rfc2068#section-19.7.1">Section 19.7.1</a> of <a href="#RFC2068" id="rfc.xref.RFC2068.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> for information and discussion of the problems with the Keep-Alive header field implemented by many HTTP/1.0 clients).
    1945       </p>
    1946       <h4 id="rfc.section.7.1.3.1"><a href="#rfc.section.7.1.3.1">7.1.3.1</a>&nbsp;<a id="end-to-end.and.hop-by-hop.header-fields" href="#end-to-end.and.hop-by-hop.header-fields">End-to-end and Hop-by-hop Header Fields</a></h4>
    1947       <p id="rfc.section.7.1.3.1.p.1">For the purpose of defining the behavior of caches and non-caching proxies, we divide HTTP header fields into two categories: </p>
    1948       <ul>
    1949          <li>End-to-end header fields, which are transmitted to the ultimate recipient of a request or response. End-to-end header fields
    1950             in responses MUST be stored as part of a cache entry and <em class="bcp14">MUST</em> be transmitted in any response formed from a cache entry.
    1951          </li>
    1952          <li>Hop-by-hop header fields, which are meaningful only for a single transport-level connection, and are not stored by caches
    1953             or forwarded by proxies.
    1954          </li>
    1955       </ul>
    1956       <p id="rfc.section.7.1.3.1.p.2">The following HTTP/1.1 header fields are hop-by-hop header fields: </p>
    1957       <ul>
    1958          <li>Connection</li>
    1959          <li>Keep-Alive</li>
    1960          <li>Proxy-Authenticate</li>
    1961          <li>Proxy-Authorization</li>
    1962          <li>TE</li>
    1963          <li>Trailer</li>
    1964          <li>Transfer-Encoding</li>
    1965          <li>Upgrade</li>
    1966       </ul>
    1967       <p id="rfc.section.7.1.3.1.p.3">All other header fields defined by HTTP/1.1 are end-to-end header fields.</p>
    1968       <p id="rfc.section.7.1.3.1.p.4">Other hop-by-hop header fields <em class="bcp14">MUST</em> be listed in a Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.7" title="Connection">Section&nbsp;9.1</a>).
    1969       </p>
    1970       <h4 id="rfc.section.7.1.3.2"><a href="#rfc.section.7.1.3.2">7.1.3.2</a>&nbsp;<a id="non-modifiable.header-fields" href="#non-modifiable.header-fields">Non-modifiable Header Fields</a></h4>
    1971       <p id="rfc.section.7.1.3.2.p.1">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end header fields. A non-transforming
    1972          proxy <em class="bcp14">SHOULD NOT</em> modify an end-to-end header field unless the definition of that header field requires or specifically allows that.
    1973       </p>
    1974       <p id="rfc.section.7.1.3.2.p.2">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a request or response, and it <em class="bcp14">MUST NOT</em> add any of these fields if not already present:
    1975       </p>
    1976       <ul>
    1977          <li>Allow</li>
    1978          <li>Content-Location</li>
    1979          <li>Content-MD5</li>
    1980          <li>ETag</li>
    1981          <li>Last-Modified</li>
    1982          <li>Server</li>
    1983       </ul>
    1984       <p id="rfc.section.7.1.3.2.p.3">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response:
    1985       </p>
    1986       <ul>
    1987          <li>Expires</li>
    1988       </ul>
    1989       <p id="rfc.section.7.1.3.2.p.4">but it <em class="bcp14">MAY</em> add any of these fields if not already present. If an Expires header field is added, it <em class="bcp14">MUST</em> be given a field-value identical to that of the Date header field in that response.
    1990       </p>
    1991       <p id="rfc.section.7.1.3.2.p.5">A proxy <em class="bcp14">MUST NOT</em> modify or add any of the following fields in a message that contains the no-transform cache-control directive, or in any request:
    1992       </p>
    1993       <ul>
    1994          <li>Content-Encoding</li>
    1995          <li>Content-Range</li>
    1996          <li>Content-Type</li>
    1997       </ul>
    1998       <p id="rfc.section.7.1.3.2.p.6">A transforming proxy <em class="bcp14">MAY</em> modify or add these fields to a message that does not include no-transform, but if it does so, it <em class="bcp14">MUST</em> add a Warning 214 (Transformation applied) if one does not already appear in the message (see <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a> of <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
    1999       </p>
    2000       <div class="note" id="rfc.section.7.1.3.2.p.7">
    2001          <p> <b>Warning:</b> Unnecessary modification of end-to-end header fields might cause authentication failures if stronger authentication mechanisms
    2002             are introduced in later versions of HTTP. Such authentication mechanisms <em class="bcp14">MAY</em> rely on the values of header fields not listed here.
    2003          </p>
     1965      <div id="connections">
     1966         <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a>&nbsp;<a href="#connections">Connections</a></h1>
     1967         <div id="persistent.connections">
     1968            <h2 id="rfc.section.7.1"><a href="#rfc.section.7.1">7.1</a>&nbsp;<a href="#persistent.connections">Persistent Connections</a></h2>
     1969            <div id="persistent.purpose">
     1970               <h3 id="rfc.section.7.1.1"><a href="#rfc.section.7.1.1">7.1.1</a>&nbsp;<a href="#persistent.purpose">Purpose</a></h3>
     1971               <p id="rfc.section.7.1.1.p.1">Prior to persistent connections, a separate TCP connection was established for each request, increasing the load on HTTP servers
     1972                  and causing congestion on the Internet. The use of inline images and other associated data often requires a client to make
     1973                  multiple requests of the same server in a short amount of time. Analysis of these performance problems and results from a
     1974                  prototype implementation are available <a href="#Pad1995" id="rfc.xref.Pad1995.1"><cite title="Improving HTTP Latency">[Pad1995]</cite></a> <a href="#Spe" id="rfc.xref.Spe.1"><cite title="Analysis of HTTP Performance Problems">[Spe]</cite></a>. Implementation experience and measurements of actual HTTP/1.1 implementations show good results <a href="#Nie1997" id="rfc.xref.Nie1997.1"><cite title="Network Performance Effects of HTTP/1.1, CSS1, and PNG">[Nie1997]</cite></a>. Alternatives have also been explored, for example, T/TCP <a href="#Tou1998" id="rfc.xref.Tou1998.1"><cite title="Analysis of HTTP Performance">[Tou1998]</cite></a>.
     1975               </p>
     1976               <p id="rfc.section.7.1.1.p.2">Persistent HTTP connections have a number of advantages: </p>
     1977               <ul>
     1978                  <li>By opening and closing fewer TCP connections, CPU time is saved in routers and hosts (clients, servers, proxies, gateways,
     1979                     tunnels, or caches), and memory used for TCP protocol control blocks can be saved in hosts.
     1980                  </li>
     1981                  <li>HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without
     1982                     waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time.
     1983                  </li>
     1984                  <li>Network congestion is reduced by reducing the number of packets caused by TCP opens, and by allowing TCP sufficient time to
     1985                     determine the congestion state of the network.
     1986                  </li>
     1987                  <li>Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake.</li>
     1988                  <li>HTTP can evolve more gracefully, since errors can be reported without the penalty of closing the TCP connection. Clients using
     1989                     future versions of HTTP might optimistically try a new feature, but if communicating with an older server, retry with old
     1990                     semantics after an error is reported.
     1991                  </li>
     1992               </ul>
     1993               <p id="rfc.section.7.1.1.p.3">HTTP implementations <em class="bcp14">SHOULD</em> implement persistent connections.
     1994               </p>
     1995            </div>
     1996            <div id="persistent.overall">
     1997               <h3 id="rfc.section.7.1.2"><a href="#rfc.section.7.1.2">7.1.2</a>&nbsp;<a href="#persistent.overall">Overall Operation</a></h3>
     1998               <p id="rfc.section.7.1.2.p.1">A significant difference between HTTP/1.1 and earlier versions of HTTP is that persistent connections are the default behavior
     1999                  of any HTTP connection. That is, unless otherwise indicated, the client <em class="bcp14">SHOULD</em> assume that the server will maintain a persistent connection, even after error responses from the server.
     2000               </p>
     2001               <p id="rfc.section.7.1.2.p.2">Persistent connections provide a mechanism by which a client and a server can signal the close of a TCP connection. This signaling
     2002                  takes place using the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.5" title="Connection">Section&nbsp;9.1</a>). Once a close has been signaled, the client <em class="bcp14">MUST NOT</em> send any more requests on that connection.
     2003               </p>
     2004               <div id="persistent.negotiation">
     2005                  <h4 id="rfc.section.7.1.2.1"><a href="#rfc.section.7.1.2.1">7.1.2.1</a>&nbsp;<a href="#persistent.negotiation">Negotiation</a></h4>
     2006                  <p id="rfc.section.7.1.2.1.p.1">An HTTP/1.1 server <em class="bcp14">MAY</em> assume that a HTTP/1.1 client intends to maintain a persistent connection unless a Connection header field including the connection-token
     2007                     "close" was sent in the request. If the server chooses to close the connection immediately after sending the response, it <em class="bcp14">SHOULD</em> send a Connection header field including the connection-token "close".
     2008                  </p>
     2009                  <p id="rfc.section.7.1.2.1.p.2">An HTTP/1.1 client <em class="bcp14">MAY</em> expect a connection to remain open, but would decide to keep it open based on whether the response from a server contains
     2010                     a Connection header field with the connection-token close. In case the client does not want to maintain a connection for more
     2011                     than that request, it <em class="bcp14">SHOULD</em> send a Connection header field including the connection-token close.
     2012                  </p>
     2013                  <p id="rfc.section.7.1.2.1.p.3">If either the client or the server sends the close token in the Connection header field, that request becomes the last one
     2014                     for the connection.
     2015                  </p>
     2016                  <p id="rfc.section.7.1.2.1.p.4">Clients and servers <em class="bcp14">SHOULD NOT</em> assume that a persistent connection is maintained for HTTP versions less than 1.1 unless it is explicitly signaled. See <a href="#compatibility.with.http.1.0.persistent.connections" title="Keep-Alive Connections">Appendix&nbsp;A.1.2</a> for more information on backward compatibility with HTTP/1.0 clients.
     2017                  </p>
     2018                  <p id="rfc.section.7.1.2.1.p.5">In order to remain persistent, all messages on the connection <em class="bcp14">MUST</em> have a self-defined message length (i.e., one not defined by closure of the connection), as described in <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>.
     2019                  </p>
     2020               </div>
     2021               <div id="pipelining">
     2022                  <h4 id="rfc.section.7.1.2.2"><a href="#rfc.section.7.1.2.2">7.1.2.2</a>&nbsp;<a href="#pipelining">Pipelining</a></h4>
     2023                  <p id="rfc.section.7.1.2.2.p.1">A client that supports persistent connections <em class="bcp14">MAY</em> "pipeline" its requests (i.e., send multiple requests without waiting for each response). A server <em class="bcp14">MUST</em> send its responses to those requests in the same order that the requests were received.
     2024                  </p>
     2025                  <p id="rfc.section.7.1.2.2.p.2">Clients which assume persistent connections and pipeline immediately after connection establishment <em class="bcp14">SHOULD</em> be prepared to retry their connection if the first pipelined attempt fails. If a client does such a retry, it <em class="bcp14">MUST NOT</em> pipeline before it knows the connection is persistent. Clients <em class="bcp14">MUST</em> also be prepared to resend their requests if the server closes the connection before sending all of the corresponding responses.
     2026                  </p>
     2027                  <p id="rfc.section.7.1.2.2.p.3">Clients <em class="bcp14">SHOULD NOT</em> pipeline requests using non-idempotent request methods or non-idempotent sequences of request methods (see <a href="p2-semantics.html#idempotent.methods" title="Idempotent Methods">Section 7.1.2</a> of <a href="#Part2" id="rfc.xref.Part2.5"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Otherwise, a premature termination of the transport connection could lead to indeterminate results. A client wishing to
     2028                     send a non-idempotent request <em class="bcp14">SHOULD</em> wait to send that request until it has received the response status line for the previous request.
     2029                  </p>
     2030               </div>
     2031            </div>
     2032            <div id="persistent.proxy">
     2033               <h3 id="rfc.section.7.1.3"><a href="#rfc.section.7.1.3">7.1.3</a>&nbsp;<a href="#persistent.proxy">Proxy Servers</a></h3>
     2034               <p id="rfc.section.7.1.3.p.1">It is especially important that proxies correctly implement the properties of the Connection header field as specified in <a href="#header.connection" id="rfc.xref.header.connection.6" title="Connection">Section&nbsp;9.1</a>.
     2035               </p>
     2036               <p id="rfc.section.7.1.3.p.2">The proxy server <em class="bcp14">MUST</em> signal persistent connections separately with its clients and the origin servers (or other proxy servers) that it connects
     2037                  to. Each persistent connection applies to only one transport link.
     2038               </p>
     2039               <p id="rfc.section.7.1.3.p.3">A proxy server <em class="bcp14">MUST NOT</em> establish a HTTP/1.1 persistent connection with an HTTP/1.0 client (but see <a href="https://tools.ietf.org/html/rfc2068#section-19.7.1">Section 19.7.1</a> of <a href="#RFC2068" id="rfc.xref.RFC2068.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> for information and discussion of the problems with the Keep-Alive header field implemented by many HTTP/1.0 clients).
     2040               </p>
     2041               <div id="end-to-end.and.hop-by-hop.header-fields">
     2042                  <h4 id="rfc.section.7.1.3.1"><a href="#rfc.section.7.1.3.1">7.1.3.1</a>&nbsp;<a href="#end-to-end.and.hop-by-hop.header-fields">End-to-end and Hop-by-hop Header Fields</a></h4>
     2043                  <p id="rfc.section.7.1.3.1.p.1">For the purpose of defining the behavior of caches and non-caching proxies, we divide HTTP header fields into two categories: </p>
     2044                  <ul>
     2045                     <li>End-to-end header fields, which are transmitted to the ultimate recipient of a request or response. End-to-end header fields
     2046                        in responses MUST be stored as part of a cache entry and <em class="bcp14">MUST</em> be transmitted in any response formed from a cache entry.
     2047                     </li>
     2048                     <li>Hop-by-hop header fields, which are meaningful only for a single transport-level connection, and are not stored by caches
     2049                        or forwarded by proxies.
     2050                     </li>
     2051                  </ul>
     2052                  <p id="rfc.section.7.1.3.1.p.2">The following HTTP/1.1 header fields are hop-by-hop header fields: </p>
     2053                  <ul>
     2054                     <li>Connection</li>
     2055                     <li>Keep-Alive</li>
     2056                     <li>Proxy-Authenticate</li>
     2057                     <li>Proxy-Authorization</li>
     2058                     <li>TE</li>
     2059                     <li>Trailer</li>
     2060                     <li>Transfer-Encoding</li>
     2061                     <li>Upgrade</li>
     2062                  </ul>
     2063                  <p id="rfc.section.7.1.3.1.p.3">All other header fields defined by HTTP/1.1 are end-to-end header fields.</p>
     2064                  <p id="rfc.section.7.1.3.1.p.4">Other hop-by-hop header fields <em class="bcp14">MUST</em> be listed in a Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.7" title="Connection">Section&nbsp;9.1</a>).
     2065                  </p>
     2066               </div>
     2067               <div id="non-modifiable.header-fields">
     2068                  <h4 id="rfc.section.7.1.3.2"><a href="#rfc.section.7.1.3.2">7.1.3.2</a>&nbsp;<a href="#non-modifiable.header-fields">Non-modifiable Header Fields</a></h4>
     2069                  <p id="rfc.section.7.1.3.2.p.1">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end header fields. A non-transforming
     2070                     proxy <em class="bcp14">SHOULD NOT</em> modify an end-to-end header field unless the definition of that header field requires or specifically allows that.
     2071                  </p>
     2072                  <p id="rfc.section.7.1.3.2.p.2">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a request or response, and it <em class="bcp14">MUST NOT</em> add any of these fields if not already present:
     2073                  </p>
     2074                  <ul>
     2075                     <li>Allow</li>
     2076                     <li>Content-Location</li>
     2077                     <li>Content-MD5</li>
     2078                     <li>ETag</li>
     2079                     <li>Last-Modified</li>
     2080                     <li>Server</li>
     2081                  </ul>
     2082                  <p id="rfc.section.7.1.3.2.p.3">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response:
     2083                  </p>
     2084                  <ul>
     2085                     <li>Expires</li>
     2086                  </ul>
     2087                  <p id="rfc.section.7.1.3.2.p.4">but it <em class="bcp14">MAY</em> add any of these fields if not already present. If an Expires header field is added, it <em class="bcp14">MUST</em> be given a field-value identical to that of the Date header field in that response.
     2088                  </p>
     2089                  <p id="rfc.section.7.1.3.2.p.5">A proxy <em class="bcp14">MUST NOT</em> modify or add any of the following fields in a message that contains the no-transform cache-control directive, or in any request:
     2090                  </p>
     2091                  <ul>
     2092                     <li>Content-Encoding</li>
     2093                     <li>Content-Range</li>
     2094                     <li>Content-Type</li>
     2095                  </ul>
     2096                  <p id="rfc.section.7.1.3.2.p.6">A transforming proxy <em class="bcp14">MAY</em> modify or add these fields to a message that does not include no-transform, but if it does so, it <em class="bcp14">MUST</em> add a Warning 214 (Transformation applied) if one does not already appear in the message (see <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a> of <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
     2097                  </p>
     2098                  <div class="note" id="rfc.section.7.1.3.2.p.7">
     2099                     <p><b>Warning:</b> Unnecessary modification of end-to-end header fields might cause authentication failures if stronger authentication mechanisms
     2100                        are introduced in later versions of HTTP. Such authentication mechanisms <em class="bcp14">MAY</em> rely on the values of header fields not listed here.
     2101                     </p>
     2102                  </div>
     2103                  <p id="rfc.section.7.1.3.2.p.8">A non-transforming proxy <em class="bcp14">MUST</em> preserve the message payload (<a href="#Part3" id="rfc.xref.Part3.4"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), though it <em class="bcp14">MAY</em> change the message-body through application or removal of a transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
     2104                  </p>
     2105               </div>
     2106            </div>
     2107            <div id="persistent.practical">
     2108               <h3 id="rfc.section.7.1.4"><a href="#rfc.section.7.1.4">7.1.4</a>&nbsp;<a href="#persistent.practical">Practical Considerations</a></h3>
     2109               <p id="rfc.section.7.1.4.p.1">Servers will usually have some time-out value beyond which they will no longer maintain an inactive connection. Proxy servers
     2110                  might make this a higher value since it is likely that the client will be making more connections through the same server.
     2111                  The use of persistent connections places no requirements on the length (or existence) of this time-out for either the client
     2112                  or the server.
     2113               </p>
     2114               <p id="rfc.section.7.1.4.p.2">When a client or server wishes to time-out it <em class="bcp14">SHOULD</em> issue a graceful close on the transport connection. Clients and servers <em class="bcp14">SHOULD</em> both constantly watch for the other side of the transport close, and respond to it as appropriate. If a client or server does
     2115                  not detect the other side's close promptly it could cause unnecessary resource drain on the network.
     2116               </p>
     2117               <p id="rfc.section.7.1.4.p.3">A client, server, or proxy <em class="bcp14">MAY</em> close the transport connection at any time. For example, a client might have started to send a new request at the same time
     2118                  that the server has decided to close the "idle" connection. From the server's point of view, the connection is being closed
     2119                  while it was idle, but from the client's point of view, a request is in progress.
     2120               </p>
     2121               <p id="rfc.section.7.1.4.p.4">This means that clients, servers, and proxies <em class="bcp14">MUST</em> be able to recover from asynchronous close events. Client software <em class="bcp14">SHOULD</em> reopen the transport connection and retransmit the aborted sequence of requests without user interaction so long as the request
     2122                  sequence is idempotent (see <a href="p2-semantics.html#idempotent.methods" title="Idempotent Methods">Section 7.1.2</a> of <a href="#Part2" id="rfc.xref.Part2.6"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Non-idempotent request methods or sequences <em class="bcp14">MUST NOT</em> be automatically retried, although user agents <em class="bcp14">MAY</em> offer a human operator the choice of retrying the request(s). Confirmation by user-agent software with semantic understanding
     2123                  of the application <em class="bcp14">MAY</em> substitute for user confirmation. The automatic retry <em class="bcp14">SHOULD NOT</em> be repeated if the second sequence of requests fails.
     2124               </p>
     2125               <p id="rfc.section.7.1.4.p.5">Servers <em class="bcp14">SHOULD</em> always respond to at least one request per connection, if at all possible. Servers <em class="bcp14">SHOULD NOT</em> close a connection in the middle of transmitting a response, unless a network or client failure is suspected.
     2126               </p>
     2127               <p id="rfc.section.7.1.4.p.6">Clients (including proxies) <em class="bcp14">SHOULD</em> limit the number of simultaneous connections that they maintain to a given server (including proxies).
     2128               </p>
     2129               <p id="rfc.section.7.1.4.p.7">Previous revisions of HTTP gave a specific number of connections as a ceiling, but this was found to be impractical for many
     2130                  applications. As a result, this specification does not mandate a particular maximum number of connections, but instead encourages
     2131                  clients to be conservative when opening multiple connections.
     2132               </p>
     2133               <p id="rfc.section.7.1.4.p.8">In particular, while using multiple connections avoids the "head-of-line blocking" problem (whereby a request that takes significant
     2134                  server-side processing and/or has a large payload can block subsequent requests on the same connection), each connection used
     2135                  consumes server resources (sometimes significantly), and furthermore using multiple connections can cause undesirable side
     2136                  effects in congested networks.
     2137               </p>
     2138               <p id="rfc.section.7.1.4.p.9">Note that servers might reject traffic that they deem abusive, including an excessive number of connections from a client.</p>
     2139            </div>
     2140         </div>
     2141         <div id="message.transmission.requirements">
     2142            <h2 id="rfc.section.7.2"><a href="#rfc.section.7.2">7.2</a>&nbsp;<a href="#message.transmission.requirements">Message Transmission Requirements</a></h2>
     2143            <div id="persistent.flow">
     2144               <h3 id="rfc.section.7.2.1"><a href="#rfc.section.7.2.1">7.2.1</a>&nbsp;<a href="#persistent.flow">Persistent Connections and Flow Control</a></h3>
     2145               <p id="rfc.section.7.2.1.p.1">HTTP/1.1 servers <em class="bcp14">SHOULD</em> maintain persistent connections and use TCP's flow control mechanisms to resolve temporary overloads, rather than terminating
     2146                  connections with the expectation that clients will retry. The latter technique can exacerbate network congestion.
     2147               </p>
     2148            </div>
     2149            <div id="persistent.monitor">
     2150               <h3 id="rfc.section.7.2.2"><a href="#rfc.section.7.2.2">7.2.2</a>&nbsp;<a href="#persistent.monitor">Monitoring Connections for Error Status Messages</a></h3>
     2151               <p id="rfc.section.7.2.2.p.1">An HTTP/1.1 (or later) client sending a message-body <em class="bcp14">SHOULD</em> monitor the network connection for an error status code while it is transmitting the request. If the client sees an error
     2152                  status code, it <em class="bcp14">SHOULD</em> immediately cease transmitting the body. If the body is being sent using a "chunked" encoding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>), a zero length chunk and empty trailer <em class="bcp14">MAY</em> be used to prematurely mark the end of the message. If the body was preceded by a Content-Length header field, the client <em class="bcp14">MUST</em> close the connection.
     2153               </p>
     2154            </div>
     2155            <div id="use.of.the.100.status">
     2156               <h3 id="rfc.section.7.2.3"><a href="#rfc.section.7.2.3">7.2.3</a>&nbsp;<a href="#use.of.the.100.status">Use of the 100 (Continue) Status</a></h3>
     2157               <p id="rfc.section.7.2.3.p.1">The purpose of the 100 (Continue) status code (see <a href="p2-semantics.html#status.100" title="100 Continue">Section 8.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.7"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) is to allow a client that is sending a request message with a request body to determine if the origin server is willing
     2158                  to accept the request (based on the request header fields) before the client sends the request body. In some cases, it might
     2159                  either be inappropriate or highly inefficient for the client to send the body if the server will reject the message without
     2160                  looking at the body.
     2161               </p>
     2162               <p id="rfc.section.7.2.3.p.2">Requirements for HTTP/1.1 clients: </p>
     2163               <ul>
     2164                  <li>If a client will wait for a 100 (Continue) response before sending the request body, it <em class="bcp14">MUST</em> send an Expect header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.8"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation.
     2165                  </li>
     2166                  <li>A client <em class="bcp14">MUST NOT</em> send an Expect header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.9"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation if it does not intend to send a request body.
     2167                  </li>
     2168               </ul>
     2169               <p id="rfc.section.7.2.3.p.3">Because of the presence of older implementations, the protocol allows ambiguous situations in which a client might send "Expect:
     2170                  100-continue" without receiving either a 417 (Expectation Failed) or a 100 (Continue) status code. Therefore, when a client
     2171                  sends this header field to an origin server (possibly via a proxy) from which it has never seen a 100 (Continue) status code,
     2172                  the client <em class="bcp14">SHOULD NOT</em> wait for an indefinite period before sending the request body.
     2173               </p>
     2174               <p id="rfc.section.7.2.3.p.4">Requirements for HTTP/1.1 origin servers: </p>
     2175               <ul>
     2176                  <li>Upon receiving a request which includes an Expect header field with the "100-continue" expectation, an origin server <em class="bcp14">MUST</em> either respond with 100 (Continue) status code and continue to read from the input stream, or respond with a final status
     2177                     code. The origin server <em class="bcp14">MUST NOT</em> wait for the request body before sending the 100 (Continue) response. If it responds with a final status code, it <em class="bcp14">MAY</em> close the transport connection or it <em class="bcp14">MAY</em> continue to read and discard the rest of the request. It <em class="bcp14">MUST NOT</em> perform the request method if it returns a final status code.
     2178                  </li>
     2179                  <li>An origin server <em class="bcp14">SHOULD NOT</em> send a 100 (Continue) response if the request message does not include an Expect header field with the "100-continue" expectation,
     2180                     and <em class="bcp14">MUST NOT</em> send a 100 (Continue) response if such a request comes from an HTTP/1.0 (or earlier) client. There is an exception to this
     2181                     rule: for compatibility with <a href="#RFC2068" id="rfc.xref.RFC2068.4"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, a server <em class="bcp14">MAY</em> send a 100 (Continue) status code in response to an HTTP/1.1 PUT or POST request that does not include an Expect header field
     2182                     with the "100-continue" expectation. This exception, the purpose of which is to minimize any client processing delays associated
     2183                     with an undeclared wait for 100 (Continue) status code, applies only to HTTP/1.1 requests, and not to requests with any other
     2184                     HTTP-version value.
     2185                  </li>
     2186                  <li>An origin server <em class="bcp14">MAY</em> omit a 100 (Continue) response if it has already received some or all of the request body for the corresponding request.
     2187                  </li>
     2188                  <li>An origin server that sends a 100 (Continue) response <em class="bcp14">MUST</em> ultimately send a final status code, once the request body is received and processed, unless it terminates the transport connection
     2189                     prematurely.
     2190                  </li>
     2191                  <li>If an origin server receives a request that does not include an Expect header field with the "100-continue" expectation, the
     2192                     request includes a request body, and the server responds with a final status code before reading the entire request body from
     2193                     the transport connection, then the server <em class="bcp14">SHOULD NOT</em> close the transport connection until it has read the entire request, or until the client closes the connection. Otherwise,
     2194                     the client might not reliably receive the response message. However, this requirement is not be construed as preventing a
     2195                     server from defending itself against denial-of-service attacks, or from badly broken client implementations.
     2196                  </li>
     2197               </ul>
     2198               <p id="rfc.section.7.2.3.p.5">Requirements for HTTP/1.1 proxies: </p>
     2199               <ul>
     2200                  <li>If a proxy receives a request that includes an Expect header field with the "100-continue" expectation, and the proxy either
     2201                     knows that the next-hop server complies with HTTP/1.1 or higher, or does not know the HTTP version of the next-hop server,
     2202                     it <em class="bcp14">MUST</em> forward the request, including the Expect header field.
     2203                  </li>
     2204                  <li>If the proxy knows that the version of the next-hop server is HTTP/1.0 or lower, it <em class="bcp14">MUST NOT</em> forward the request, and it <em class="bcp14">MUST</em> respond with a 417 (Expectation Failed) status code.
     2205                  </li>
     2206                  <li>Proxies <em class="bcp14">SHOULD</em> maintain a record of the HTTP version numbers received from recently-referenced next-hop servers.
     2207                  </li>
     2208                  <li>A proxy <em class="bcp14">MUST NOT</em> forward a 100 (Continue) response if the request message was received from an HTTP/1.0 (or earlier) client and did not include
     2209                     an Expect header field with the "100-continue" expectation. This requirement overrides the general rule for forwarding of
     2210                     1xx responses (see <a href="p2-semantics.html#status.1xx" title="Informational 1xx">Section 8.1</a> of <a href="#Part2" id="rfc.xref.Part2.10"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     2211                  </li>
     2212               </ul>
     2213            </div>
     2214            <div id="connection.premature">
     2215               <h3 id="rfc.section.7.2.4"><a href="#rfc.section.7.2.4">7.2.4</a>&nbsp;<a href="#connection.premature">Client Behavior if Server Prematurely Closes Connection</a></h3>
     2216               <p id="rfc.section.7.2.4.p.1">If an HTTP/1.1 client sends a request which includes a request body, but which does not include an Expect header field with
     2217                  the "100-continue" expectation, and if the client is not directly connected to an HTTP/1.1 origin server, and if the client
     2218                  sees the connection close before receiving a status line from the server, the client <em class="bcp14">SHOULD</em> retry the request. If the client does retry this request, it <em class="bcp14">MAY</em> use the following "binary exponential backoff" algorithm to be assured of obtaining a reliable response:
     2219               </p>
     2220               <ol>
     2221                  <li>Initiate a new connection to the server</li>
     2222                  <li>Transmit the request-line, header fields, and the CRLF that indicates the end of header fields.</li>
     2223                  <li>Initialize a variable R to the estimated round-trip time to the server (e.g., based on the time it took to establish the connection),
     2224                     or to a constant value of 5 seconds if the round-trip time is not available.
     2225                  </li>
     2226                  <li>Compute T = R * (2**N), where N is the number of previous retries of this request.</li>
     2227                  <li>Wait either for an error response from the server, or for T seconds (whichever comes first)</li>
     2228                  <li>If no error response is received, after T seconds transmit the body of the request.</li>
     2229                  <li>If client sees that the connection is closed prematurely, repeat from step 1 until the request is accepted, an error response
     2230                     is received, or the user becomes impatient and terminates the retry process.
     2231                  </li>
     2232               </ol>
     2233               <p id="rfc.section.7.2.4.p.2">If at any point an error status code is received, the client </p>
     2234               <ul>
     2235                  <li><em class="bcp14">SHOULD NOT</em> continue and
     2236                  </li>
     2237                  <li><em class="bcp14">SHOULD</em> close the connection if it has not completed sending the request message.
     2238                  </li>
     2239               </ul>
     2240            </div>
     2241         </div>
    20042242      </div>
    2005       <p id="rfc.section.7.1.3.2.p.8">A non-transforming proxy <em class="bcp14">MUST</em> preserve the message payload (<a href="#Part3" id="rfc.xref.Part3.4"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), though it <em class="bcp14">MAY</em> change the message-body through application or removal of a transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
    2006       </p>
    2007       <h3 id="rfc.section.7.1.4"><a href="#rfc.section.7.1.4">7.1.4</a>&nbsp;<a id="persistent.practical" href="#persistent.practical">Practical Considerations</a></h3>
    2008       <p id="rfc.section.7.1.4.p.1">Servers will usually have some time-out value beyond which they will no longer maintain an inactive connection. Proxy servers
    2009          might make this a higher value since it is likely that the client will be making more connections through the same server.
    2010          The use of persistent connections places no requirements on the length (or existence) of this time-out for either the client
    2011          or the server.
    2012       </p>
    2013       <p id="rfc.section.7.1.4.p.2">When a client or server wishes to time-out it <em class="bcp14">SHOULD</em> issue a graceful close on the transport connection. Clients and servers <em class="bcp14">SHOULD</em> both constantly watch for the other side of the transport close, and respond to it as appropriate. If a client or server does
    2014          not detect the other side's close promptly it could cause unnecessary resource drain on the network.
    2015       </p>
    2016       <p id="rfc.section.7.1.4.p.3">A client, server, or proxy <em class="bcp14">MAY</em> close the transport connection at any time. For example, a client might have started to send a new request at the same time
    2017          that the server has decided to close the "idle" connection. From the server's point of view, the connection is being closed
    2018          while it was idle, but from the client's point of view, a request is in progress.
    2019       </p>
    2020       <p id="rfc.section.7.1.4.p.4">This means that clients, servers, and proxies <em class="bcp14">MUST</em> be able to recover from asynchronous close events. Client software <em class="bcp14">SHOULD</em> reopen the transport connection and retransmit the aborted sequence of requests without user interaction so long as the request
    2021          sequence is idempotent (see <a href="p2-semantics.html#idempotent.methods" title="Idempotent Methods">Section 7.1.2</a> of <a href="#Part2" id="rfc.xref.Part2.6"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Non-idempotent request methods or sequences <em class="bcp14">MUST NOT</em> be automatically retried, although user agents <em class="bcp14">MAY</em> offer a human operator the choice of retrying the request(s). Confirmation by user-agent software with semantic understanding
    2022          of the application <em class="bcp14">MAY</em> substitute for user confirmation. The automatic retry <em class="bcp14">SHOULD NOT</em> be repeated if the second sequence of requests fails.
    2023       </p>
    2024       <p id="rfc.section.7.1.4.p.5">Servers <em class="bcp14">SHOULD</em> always respond to at least one request per connection, if at all possible. Servers <em class="bcp14">SHOULD NOT</em> close a connection in the middle of transmitting a response, unless a network or client failure is suspected.
    2025       </p>
    2026       <p id="rfc.section.7.1.4.p.6">Clients (including proxies) <em class="bcp14">SHOULD</em> limit the number of simultaneous connections that they maintain to a given server (including proxies).
    2027       </p>
    2028       <p id="rfc.section.7.1.4.p.7">Previous revisions of HTTP gave a specific number of connections as a ceiling, but this was found to be impractical for many
    2029          applications. As a result, this specification does not mandate a particular maximum number of connections, but instead encourages
    2030          clients to be conservative when opening multiple connections.
    2031       </p>
    2032       <p id="rfc.section.7.1.4.p.8">In particular, while using multiple connections avoids the "head-of-line blocking" problem (whereby a request that takes significant
    2033          server-side processing and/or has a large payload can block subsequent requests on the same connection), each connection used
    2034          consumes server resources (sometimes significantly), and furthermore using multiple connections can cause undesirable side
    2035          effects in congested networks.
    2036       </p>
    2037       <p id="rfc.section.7.1.4.p.9">Note that servers might reject traffic that they deem abusive, including an excessive number of connections from a client.</p>
    2038       <h2 id="rfc.section.7.2"><a href="#rfc.section.7.2">7.2</a>&nbsp;<a id="message.transmission.requirements" href="#message.transmission.requirements">Message Transmission Requirements</a></h2>
    2039       <h3 id="rfc.section.7.2.1"><a href="#rfc.section.7.2.1">7.2.1</a>&nbsp;<a id="persistent.flow" href="#persistent.flow">Persistent Connections and Flow Control</a></h3>
    2040       <p id="rfc.section.7.2.1.p.1">HTTP/1.1 servers <em class="bcp14">SHOULD</em> maintain persistent connections and use TCP's flow control mechanisms to resolve temporary overloads, rather than terminating
    2041          connections with the expectation that clients will retry. The latter technique can exacerbate network congestion.
    2042       </p>
    2043       <h3 id="rfc.section.7.2.2"><a href="#rfc.section.7.2.2">7.2.2</a>&nbsp;<a id="persistent.monitor" href="#persistent.monitor">Monitoring Connections for Error Status Messages</a></h3>
    2044       <p id="rfc.section.7.2.2.p.1">An HTTP/1.1 (or later) client sending a message-body <em class="bcp14">SHOULD</em> monitor the network connection for an error status code while it is transmitting the request. If the client sees an error
    2045          status code, it <em class="bcp14">SHOULD</em> immediately cease transmitting the body. If the body is being sent using a "chunked" encoding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>), a zero length chunk and empty trailer <em class="bcp14">MAY</em> be used to prematurely mark the end of the message. If the body was preceded by a Content-Length header field, the client <em class="bcp14">MUST</em> close the connection.
    2046       </p>
    2047       <h3 id="rfc.section.7.2.3"><a href="#rfc.section.7.2.3">7.2.3</a>&nbsp;<a id="use.of.the.100.status" href="#use.of.the.100.status">Use of the 100 (Continue) Status</a></h3>
    2048       <p id="rfc.section.7.2.3.p.1">The purpose of the 100 (Continue) status code (see <a href="p2-semantics.html#status.100" title="100 Continue">Section 8.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.7"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) is to allow a client that is sending a request message with a request body to determine if the origin server is willing
    2049          to accept the request (based on the request header fields) before the client sends the request body. In some cases, it might
    2050          either be inappropriate or highly inefficient for the client to send the body if the server will reject the message without
    2051          looking at the body.
    2052       </p>
    2053       <p id="rfc.section.7.2.3.p.2">Requirements for HTTP/1.1 clients: </p>
    2054       <ul>
    2055          <li>If a client will wait for a 100 (Continue) response before sending the request body, it <em class="bcp14">MUST</em> send an Expect header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.8"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation.
    2056          </li>
    2057          <li>A client <em class="bcp14">MUST NOT</em> send an Expect header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.9"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation if it does not intend to send a request body.
    2058          </li>
    2059       </ul>
    2060       <p id="rfc.section.7.2.3.p.3">Because of the presence of older implementations, the protocol allows ambiguous situations in which a client might send "Expect:
    2061          100-continue" without receiving either a 417 (Expectation Failed) or a 100 (Continue) status code. Therefore, when a client
    2062          sends this header field to an origin server (possibly via a proxy) from which it has never seen a 100 (Continue) status code,
    2063          the client <em class="bcp14">SHOULD NOT</em> wait for an indefinite period before sending the request body.
    2064       </p>
    2065       <p id="rfc.section.7.2.3.p.4">Requirements for HTTP/1.1 origin servers: </p>
    2066       <ul>
    2067          <li>Upon receiving a request which includes an Expect header field with the "100-continue" expectation, an origin server <em class="bcp14">MUST</em> either respond with 100 (Continue) status code and continue to read from the input stream, or respond with a final status
    2068             code. The origin server <em class="bcp14">MUST NOT</em> wait for the request body before sending the 100 (Continue) response. If it responds with a final status code, it <em class="bcp14">MAY</em> close the transport connection or it <em class="bcp14">MAY</em> continue to read and discard the rest of the request. It <em class="bcp14">MUST NOT</em> perform the request method if it returns a final status code.
    2069          </li>
    2070          <li>An origin server <em class="bcp14">SHOULD NOT</em> send a 100 (Continue) response if the request message does not include an Expect header field with the "100-continue" expectation,
    2071             and <em class="bcp14">MUST NOT</em> send a 100 (Continue) response if such a request comes from an HTTP/1.0 (or earlier) client. There is an exception to this
    2072             rule: for compatibility with <a href="#RFC2068" id="rfc.xref.RFC2068.4"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, a server <em class="bcp14">MAY</em> send a 100 (Continue) status code in response to an HTTP/1.1 PUT or POST request that does not include an Expect header field
    2073             with the "100-continue" expectation. This exception, the purpose of which is to minimize any client processing delays associated
    2074             with an undeclared wait for 100 (Continue) status code, applies only to HTTP/1.1 requests, and not to requests with any other
    2075             HTTP-version value.
    2076          </li>
    2077          <li>An origin server <em class="bcp14">MAY</em> omit a 100 (Continue) response if it has already received some or all of the request body for the corresponding request.
    2078          </li>
    2079          <li>An origin server that sends a 100 (Continue) response <em class="bcp14">MUST</em> ultimately send a final status code, once the request body is received and processed, unless it terminates the transport connection
    2080             prematurely.
    2081          </li>
    2082          <li>If an origin server receives a request that does not include an Expect header field with the "100-continue" expectation, the
    2083             request includes a request body, and the server responds with a final status code before reading the entire request body from
    2084             the transport connection, then the server <em class="bcp14">SHOULD NOT</em> close the transport connection until it has read the entire request, or until the client closes the connection. Otherwise,
    2085             the client might not reliably receive the response message. However, this requirement is not be construed as preventing a
    2086             server from defending itself against denial-of-service attacks, or from badly broken client implementations.
    2087          </li>
    2088       </ul>
    2089       <p id="rfc.section.7.2.3.p.5">Requirements for HTTP/1.1 proxies: </p>
    2090       <ul>
    2091          <li>If a proxy receives a request that includes an Expect header field with the "100-continue" expectation, and the proxy either
    2092             knows that the next-hop server complies with HTTP/1.1 or higher, or does not know the HTTP version of the next-hop server,
    2093             it <em class="bcp14">MUST</em> forward the request, including the Expect header field.
    2094          </li>
    2095          <li>If the proxy knows that the version of the next-hop server is HTTP/1.0 or lower, it <em class="bcp14">MUST NOT</em> forward the request, and it <em class="bcp14">MUST</em> respond with a 417 (Expectation Failed) status code.
    2096          </li>
    2097          <li>Proxies <em class="bcp14">SHOULD</em> maintain a record of the HTTP version numbers received from recently-referenced next-hop servers.
    2098          </li>
    2099          <li>A proxy <em class="bcp14">MUST NOT</em> forward a 100 (Continue) response if the request message was received from an HTTP/1.0 (or earlier) client and did not include
    2100             an Expect header field with the "100-continue" expectation. This requirement overrides the general rule for forwarding of
    2101             1xx responses (see <a href="p2-semantics.html#status.1xx" title="Informational 1xx">Section 8.1</a> of <a href="#Part2" id="rfc.xref.Part2.10"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    2102          </li>
    2103       </ul>
    2104       <h3 id="rfc.section.7.2.4"><a href="#rfc.section.7.2.4">7.2.4</a>&nbsp;<a id="connection.premature" href="#connection.premature">Client Behavior if Server Prematurely Closes Connection</a></h3>
    2105       <p id="rfc.section.7.2.4.p.1">If an HTTP/1.1 client sends a request which includes a request body, but which does not include an Expect header field with
    2106          the "100-continue" expectation, and if the client is not directly connected to an HTTP/1.1 origin server, and if the client
    2107          sees the connection close before receiving a status line from the server, the client <em class="bcp14">SHOULD</em> retry the request. If the client does retry this request, it <em class="bcp14">MAY</em> use the following "binary exponential backoff" algorithm to be assured of obtaining a reliable response:
    2108       </p>
    2109       <ol>
    2110          <li>Initiate a new connection to the server</li>
    2111          <li>Transmit the request-line, header fields, and the CRLF that indicates the end of header fields.</li>
    2112          <li>Initialize a variable R to the estimated round-trip time to the server (e.g., based on the time it took to establish the connection),
    2113             or to a constant value of 5 seconds if the round-trip time is not available.
    2114          </li>
    2115          <li>Compute T = R * (2**N), where N is the number of previous retries of this request.</li>
    2116          <li>Wait either for an error response from the server, or for T seconds (whichever comes first)</li>
    2117          <li>If no error response is received, after T seconds transmit the body of the request.</li>
    2118          <li>If client sees that the connection is closed prematurely, repeat from step 1 until the request is accepted, an error response
    2119             is received, or the user becomes impatient and terminates the retry process.
    2120          </li>
    2121       </ol>
    2122       <p id="rfc.section.7.2.4.p.2">If at any point an error status code is received, the client </p>
    2123       <ul>
    2124          <li><em class="bcp14">SHOULD NOT</em> continue and
    2125          </li>
    2126          <li><em class="bcp14">SHOULD</em> close the connection if it has not completed sending the request message.
    2127          </li>
    2128       </ul>
    2129       <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a id="misc" href="#misc">Miscellaneous notes that might disappear</a></h1>
    2130       <h2 id="rfc.section.8.1"><a href="#rfc.section.8.1">8.1</a>&nbsp;<a id="scheme.aliases" href="#scheme.aliases">Scheme aliases considered harmful</a></h2>
    2131       <p id="rfc.section.8.1.p.1"> <span class="comment" id="TBD-aliases-harmful">[<a href="#TBD-aliases-harmful" class="smpl">TBD-aliases-harmful</a>: describe why aliases like webcal are harmful.]</span>
    2132       </p>
    2133       <h2 id="rfc.section.8.2"><a href="#rfc.section.8.2">8.2</a>&nbsp;<a id="http.proxy" href="#http.proxy">Use of HTTP for proxy communication</a></h2>
    2134       <p id="rfc.section.8.2.p.1"> <span class="comment" id="TBD-proxy-other">[<a href="#TBD-proxy-other" class="smpl">TBD-proxy-other</a>: Configured to use HTTP to proxy HTTP or other protocols.]</span>
    2135       </p>
    2136       <h2 id="rfc.section.8.3"><a href="#rfc.section.8.3">8.3</a>&nbsp;<a id="http.intercept" href="#http.intercept">Interception of HTTP for access control</a></h2>
    2137       <p id="rfc.section.8.3.p.1"> <span class="comment" id="TBD-intercept">[<a href="#TBD-intercept" class="smpl">TBD-intercept</a>: Interception of HTTP traffic for initiating access control.]</span>
    2138       </p>
    2139       <h2 id="rfc.section.8.4"><a href="#rfc.section.8.4">8.4</a>&nbsp;<a id="http.others" href="#http.others">Use of HTTP by other protocols</a></h2>
    2140       <p id="rfc.section.8.4.p.1"> <span class="comment" id="TBD-profiles">[<a href="#TBD-profiles" class="smpl">TBD-profiles</a>: Profiles of HTTP defined by other protocol. Extensions of HTTP like WebDAV.]</span>
    2141       </p>
    2142       <h2 id="rfc.section.8.5"><a href="#rfc.section.8.5">8.5</a>&nbsp;<a id="http.media" href="#http.media">Use of HTTP by media type specification</a></h2>
    2143       <p id="rfc.section.8.5.p.1"> <span class="comment" id="TBD-hypertext">[<a href="#TBD-hypertext" class="smpl">TBD-hypertext</a>: Instructions on composing HTTP requests via hypertext formats.]</span>
    2144       </p>
    2145       <h1 id="rfc.section.9"><a href="#rfc.section.9">9.</a>&nbsp;<a id="header.field.definitions" href="#header.field.definitions">Header Field Definitions</a></h1>
    2146       <p id="rfc.section.9.p.1">This section defines the syntax and semantics of HTTP header fields related to message framing and transport protocols.</p>
    2147       <div id="rfc.iref.c.12"></div>
    2148       <div id="rfc.iref.h.6"></div>
    2149       <h2 id="rfc.section.9.1"><a href="#rfc.section.9.1">9.1</a>&nbsp;<a id="header.connection" href="#header.connection">Connection</a></h2>
    2150       <p id="rfc.section.9.1.p.1">The "Connection" header field allows the sender to specify options that are desired only for that particular connection. Such
    2151          connection options <em class="bcp14">MUST</em> be removed or replaced before the message can be forwarded downstream by a proxy or gateway. This mechanism also allows the
    2152          sender to indicate which HTTP header fields used in the message are only intended for the immediate recipient ("hop-by-hop"),
    2153          as opposed to all recipients on the chain ("end-to-end"), enabling the message to be self-descriptive and allowing future
    2154          connection-specific extensions to be deployed in HTTP without fear that they will be blindly forwarded by previously deployed
    2155          intermediaries.
    2156       </p>
    2157       <p id="rfc.section.9.1.p.2">The Connection header field's value has the following grammar:</p>
    2158       <div id="rfc.figure.u.55"></div><pre class="inline"><span id="rfc.iref.g.91"></span><span id="rfc.iref.g.92"></span>  <a href="#header.connection" class="smpl">Connection</a>       = 1#<a href="#header.connection" class="smpl">connection-token</a>
     2243      <div id="misc">
     2244         <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a href="#misc">Miscellaneous notes that might disappear</a></h1>
     2245         <div id="scheme.aliases">
     2246            <h2 id="rfc.section.8.1"><a href="#rfc.section.8.1">8.1</a>&nbsp;<a href="#scheme.aliases">Scheme aliases considered harmful</a></h2>
     2247            <p id="rfc.section.8.1.p.1"><span class="comment" id="TBD-aliases-harmful">[<a href="#TBD-aliases-harmful" class="smpl">TBD-aliases-harmful</a>: describe why aliases like webcal are harmful.]</span>
     2248            </p>
     2249         </div>
     2250         <div id="http.proxy">
     2251            <h2 id="rfc.section.8.2"><a href="#rfc.section.8.2">8.2</a>&nbsp;<a href="#http.proxy">Use of HTTP for proxy communication</a></h2>
     2252            <p id="rfc.section.8.2.p.1"><span class="comment" id="TBD-proxy-other">[<a href="#TBD-proxy-other" class="smpl">TBD-proxy-other</a>: Configured to use HTTP to proxy HTTP or other protocols.]</span>
     2253            </p>
     2254         </div>
     2255         <div id="http.intercept">
     2256            <h2 id="rfc.section.8.3"><a href="#rfc.section.8.3">8.3</a>&nbsp;<a href="#http.intercept">Interception of HTTP for access control</a></h2>
     2257            <p id="rfc.section.8.3.p.1"><span class="comment" id="TBD-intercept">[<a href="#TBD-intercept" class="smpl">TBD-intercept</a>: Interception of HTTP traffic for initiating access control.]</span>
     2258            </p>
     2259         </div>
     2260         <div id="http.others">
     2261            <h2 id="rfc.section.8.4"><a href="#rfc.section.8.4">8.4</a>&nbsp;<a href="#http.others">Use of HTTP by other protocols</a></h2>
     2262            <p id="rfc.section.8.4.p.1"><span class="comment" id="TBD-profiles">[<a href="#TBD-profiles" class="smpl">TBD-profiles</a>: Profiles of HTTP defined by other protocol. Extensions of HTTP like WebDAV.]</span>
     2263            </p>
     2264         </div>
     2265         <div id="http.media">
     2266            <h2 id="rfc.section.8.5"><a href="#rfc.section.8.5">8.5</a>&nbsp;<a href="#http.media">Use of HTTP by media type specification</a></h2>
     2267            <p id="rfc.section.8.5.p.1"><span class="comment" id="TBD-hypertext">[<a href="#TBD-hypertext" class="smpl">TBD-hypertext</a>: Instructions on composing HTTP requests via hypertext formats.]</span>
     2268            </p>
     2269         </div>
     2270      </div>
     2271      <div id="header.field.definitions">
     2272         <h1 id="rfc.section.9"><a href="#rfc.section.9">9.</a>&nbsp;<a href="#header.field.definitions">Header Field Definitions</a></h1>
     2273         <p id="rfc.section.9.p.1">This section defines the syntax and semantics of HTTP header fields related to message framing and transport protocols.</p>
     2274         <div id="header.connection">
     2275            <div id="rfc.iref.c.12"></div>
     2276            <div id="rfc.iref.h.6"></div>
     2277            <h2 id="rfc.section.9.1"><a href="#rfc.section.9.1">9.1</a>&nbsp;<a href="#header.connection">Connection</a></h2>
     2278            <p id="rfc.section.9.1.p.1">The "Connection" header field allows the sender to specify options that are desired only for that particular connection. Such
     2279               connection options <em class="bcp14">MUST</em> be removed or replaced before the message can be forwarded downstream by a proxy or gateway. This mechanism also allows the
     2280               sender to indicate which HTTP header fields used in the message are only intended for the immediate recipient ("hop-by-hop"),
     2281               as opposed to all recipients on the chain ("end-to-end"), enabling the message to be self-descriptive and allowing future
     2282               connection-specific extensions to be deployed in HTTP without fear that they will be blindly forwarded by previously deployed
     2283               intermediaries.
     2284            </p>
     2285            <p id="rfc.section.9.1.p.2">The Connection header field's value has the following grammar:</p>
     2286            <div id="rfc.figure.u.55"></div><pre class="inline"><span id="rfc.iref.g.91"></span><span id="rfc.iref.g.92"></span>  <a href="#header.connection" class="smpl">Connection</a>       = 1#<a href="#header.connection" class="smpl">connection-token</a>
    21592287  <a href="#header.connection" class="smpl">connection-token</a> = <a href="#rule.token.separators" class="smpl">token</a>
    21602288</pre><p id="rfc.section.9.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
    2161          any header field(s) from the message with the same name as the connection-token, and then remove the Connection header field
    2162          itself or replace it with the sender's own connection options for the forwarded message.
    2163       </p>
    2164       <p id="rfc.section.9.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
    2165          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.6"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
    2166       </p>
    2167       <p id="rfc.section.9.1.p.6">The connection options do not have to correspond to a header field present in the message, since a connection-specific header
    2168          field might not be needed if there are no parameters associated with that connection option. Recipients that trigger certain
    2169          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,
    2170          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
    2171          compliant.
    2172       </p>
    2173       <p id="rfc.section.9.1.p.7">When defining new connection options, specifications ought to carefully consider existing deployed header fields and ensure
    2174          that the new connection-token does not share the same name as an unrelated header field that might already be deployed. Defining
    2175          a new connection-token essentially reserves that potential field-name for carrying additional information related to the connection
    2176          option, since it would be unwise for senders to use that field-name for anything else.
    2177       </p>
    2178       <p id="rfc.section.9.1.p.8">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
    2179          of the response. For example,
    2180       </p>
    2181       <div id="rfc.figure.u.56"></div><pre class="text">  Connection: close
     2289               any header field(s) from the message with the same name as the connection-token, and then remove the Connection header field
     2290               itself or replace it with the sender's own connection options for the forwarded message.
     2291            </p>
     2292            <p id="rfc.section.9.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
     2293               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.6"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
     2294            </p>
     2295            <p id="rfc.section.9.1.p.6">The connection options do not have to correspond to a header field present in the message, since a connection-specific header
     2296               field might not be needed if there are no parameters associated with that connection option. Recipients that trigger certain
     2297               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,
     2298               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
     2299               compliant.
     2300            </p>
     2301            <p id="rfc.section.9.1.p.7">When defining new connection options, specifications ought to carefully consider existing deployed header fields and ensure
     2302               that the new connection-token does not share the same name as an unrelated header field that might already be deployed. Defining
     2303               a new connection-token essentially reserves that potential field-name for carrying additional information related to the connection
     2304               option, since it would be unwise for senders to use that field-name for anything else.
     2305            </p>
     2306            <p id="rfc.section.9.1.p.8">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
     2307               of the response. For example,
     2308            </p>
     2309            <div id="rfc.figure.u.56"></div><pre class="text">  Connection: close
    21822310</pre><p id="rfc.section.9.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;7.1</a>) after the current request/response is complete.
    2183       </p>
    2184       <p id="rfc.section.9.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.
    2185       </p>
    2186       <p id="rfc.section.9.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.
    2187       </p>
    2188       <div id="rfc.iref.c.13"></div>
    2189       <div id="rfc.iref.h.7"></div>
    2190       <h2 id="rfc.section.9.2"><a href="#rfc.section.9.2">9.2</a>&nbsp;<a id="header.content-length" href="#header.content-length">Content-Length</a></h2>
    2191       <p id="rfc.section.9.2.p.1">The "Content-Length" header field indicates the size of the message-body, in decimal number of octets, for any message other
    2192          than a response to a HEAD request or a response with a status code of 304. In the case of a response to a HEAD request, Content-Length
    2193          indicates the size of the payload body (not including any potential transfer-coding) that would have been sent had the request
    2194          been a GET. In the case of a 304 (Not Modified) response to a GET request, Content-Length indicates the size of the payload
    2195          body (not including any potential transfer-coding) that would have been sent in a 200 (OK) response.
    2196       </p>
    2197       <div id="rfc.figure.u.57"></div><pre class="inline"><span id="rfc.iref.g.93"></span>  <a href="#header.content-length" class="smpl">Content-Length</a> = 1*<a href="#core.rules" class="smpl">DIGIT</a>
     2311            </p>
     2312            <p id="rfc.section.9.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.
     2313            </p>
     2314            <p id="rfc.section.9.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.
     2315            </p>
     2316         </div>
     2317         <div id="header.content-length">
     2318            <div id="rfc.iref.c.13"></div>
     2319            <div id="rfc.iref.h.7"></div>
     2320            <h2 id="rfc.section.9.2"><a href="#rfc.section.9.2">9.2</a>&nbsp;<a href="#header.content-length">Content-Length</a></h2>
     2321            <p id="rfc.section.9.2.p.1">The "Content-Length" header field indicates the size of the message-body, in decimal number of octets, for any message other
     2322               than a response to a HEAD request or a response with a status code of 304. In the case of a response to a HEAD request, Content-Length
     2323               indicates the size of the payload body (not including any potential transfer-coding) that would have been sent had the request
     2324               been a GET. In the case of a 304 (Not Modified) response to a GET request, Content-Length indicates the size of the payload
     2325               body (not including any potential transfer-coding) that would have been sent in a 200 (OK) response.
     2326            </p>
     2327            <div id="rfc.figure.u.57"></div><pre class="inline"><span id="rfc.iref.g.93"></span>  <a href="#header.content-length" class="smpl">Content-Length</a> = 1*<a href="#core.rules" class="smpl">DIGIT</a>
    21982328</pre><p id="rfc.section.9.2.p.3">An example is</p>
    2199       <div id="rfc.figure.u.58"></div><pre class="text">  Content-Length: 3495
     2329            <div id="rfc.figure.u.58"></div><pre class="text">  Content-Length: 3495
    22002330</pre><p id="rfc.section.9.2.p.5">Implementations <em class="bcp14">SHOULD</em> use this field to indicate the message-body length when no transfer-coding is being applied and the payload's body length
    2201          can be determined prior to being transferred. <a href="#message.body" title="Message Body">Section&nbsp;3.3</a> describes how recipients determine the length of a message-body.
    2202       </p>
    2203       <p id="rfc.section.9.2.p.6">Any Content-Length greater than or equal to zero is a valid value.</p>
    2204       <p id="rfc.section.9.2.p.7">Note that the use of this field in HTTP is significantly different from the corresponding definition in MIME, where it is
    2205          an optional field used within the "message/external-body" content-type.
    2206       </p>
    2207       <div id="rfc.iref.d.3"></div>
    2208       <div id="rfc.iref.h.8"></div>
    2209       <h2 id="rfc.section.9.3"><a href="#rfc.section.9.3">9.3</a>&nbsp;<a id="header.date" href="#header.date">Date</a></h2>
    2210       <p id="rfc.section.9.3.p.1">The "Date" header field represents the date and time at which the message was originated, having the same semantics as the
    2211          Origination Date Field (orig-date) defined in <a href="http://tools.ietf.org/html/rfc5322#section-3.6.1">Section 3.6.1</a> of <a href="#RFC5322" id="rfc.xref.RFC5322.4"><cite title="Internet Message Format">[RFC5322]</cite></a>. The field value is an HTTP-date, as described in <a href="#date.time.formats.full.date" title="Date/Time Formats: Full Date">Section&nbsp;6.1</a>; it <em class="bcp14">MUST</em> be sent in rfc1123-date format.
    2212       </p>
    2213       <div id="rfc.figure.u.59"></div><pre class="inline"><span id="rfc.iref.g.94"></span>  <a href="#header.date" class="smpl">Date</a> = <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a>
     2331               can be determined prior to being transferred. <a href="#message.body" title="Message Body">Section&nbsp;3.3</a> describes how recipients determine the length of a message-body.
     2332            </p>
     2333            <p id="rfc.section.9.2.p.6">Any Content-Length greater than or equal to zero is a valid value.</p>
     2334            <p id="rfc.section.9.2.p.7">Note that the use of this field in HTTP is significantly different from the corresponding definition in MIME, where it is
     2335               an optional field used within the "message/external-body" content-type.
     2336            </p>
     2337         </div>
     2338         <div id="header.date">
     2339            <div id="rfc.iref.d.3"></div>
     2340            <div id="rfc.iref.h.8"></div>
     2341            <h2 id="rfc.section.9.3"><a href="#rfc.section.9.3">9.3</a>&nbsp;<a href="#header.date">Date</a></h2>
     2342            <p id="rfc.section.9.3.p.1">The "Date" header field represents the date and time at which the message was originated, having the same semantics as the
     2343               Origination Date Field (orig-date) defined in <a href="https://tools.ietf.org/html/rfc5322#section-3.6.1">Section 3.6.1</a> of <a href="#RFC5322" id="rfc.xref.RFC5322.4"><cite title="Internet Message Format">[RFC5322]</cite></a>. The field value is an HTTP-date, as described in <a href="#date.time.formats.full.date" title="Date/Time Formats: Full Date">Section&nbsp;6.1</a>; it <em class="bcp14">MUST</em> be sent in rfc1123-date format.
     2344            </p>
     2345            <div id="rfc.figure.u.59"></div><pre class="inline"><span id="rfc.iref.g.94"></span>  <a href="#header.date" class="smpl">Date</a> = <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a>
    22142346</pre><p id="rfc.section.9.3.p.3">An example is</p>
    2215       <div id="rfc.figure.u.60"></div><pre class="text">  Date: Tue, 15 Nov 1994 08:12:31 GMT
     2347            <div id="rfc.figure.u.60"></div><pre class="text">  Date: Tue, 15 Nov 1994 08:12:31 GMT
    22162348</pre><p id="rfc.section.9.3.p.5">Origin servers <em class="bcp14">MUST</em> include a Date header field in all responses, except in these cases:
    2217       </p>
    2218       <ol>
    2219          <li>If the response status code is 100 (Continue) or 101 (Switching Protocols), the response <em class="bcp14">MAY</em> include a Date header field, at the server's option.
    2220          </li>
    2221          <li>If the response status code conveys a server error, e.g., 500 (Internal Server Error) or 503 (Service Unavailable), and it
    2222             is inconvenient or impossible to generate a valid Date.
    2223          </li>
    2224          <li>If the server does not have a clock that can provide a reasonable approximation of the current time, its responses <em class="bcp14">MUST NOT</em> include a Date header field. In this case, the rules in <a href="#clockless.origin.server.operation" title="Clockless Origin Server Operation">Section&nbsp;9.3.1</a>  <em class="bcp14">MUST</em> be followed.
    2225          </li>
    2226       </ol>
    2227       <p id="rfc.section.9.3.p.6">A received message that does not have a Date header field <em class="bcp14">MUST</em> be assigned one by the recipient if the message will be cached by that recipient.
    2228       </p>
    2229       <p id="rfc.section.9.3.p.7">Clients can use the Date header field as well; in order to keep request messages small, they are advised not to include it
    2230          when it doesn't convey any useful information (as it is usually the case for requests that do not contain a payload).
    2231       </p>
    2232       <p id="rfc.section.9.3.p.8">The HTTP-date sent in a Date header field <em class="bcp14">SHOULD NOT</em> represent a date and time subsequent to the generation of the message. It <em class="bcp14">SHOULD</em> represent the best available approximation of the date and time of message generation, unless the implementation has no means
    2233          of generating a reasonably accurate date and time. In theory, the date ought to represent the moment just before the payload
    2234          is generated. In practice, the date can be generated at any time during the message origination without affecting its semantic
    2235          value.
    2236       </p>
    2237       <h3 id="rfc.section.9.3.1"><a href="#rfc.section.9.3.1">9.3.1</a>&nbsp;<a id="clockless.origin.server.operation" href="#clockless.origin.server.operation">Clockless Origin Server Operation</a></h3>
    2238       <p id="rfc.section.9.3.1.p.1">Some origin server implementations might not have a clock available. An origin server without a clock <em class="bcp14">MUST NOT</em> assign Expires or Last-Modified values to a response, unless these values were associated with the resource by a system or
    2239          user with a reliable clock. It <em class="bcp14">MAY</em> assign an Expires value that is known, at or before server configuration time, to be in the past (this allows "pre-expiration"
    2240          of responses without storing separate Expires values for each resource).
    2241       </p>
    2242       <div id="rfc.iref.h.9"></div>
    2243       <div id="rfc.iref.h.10"></div>
    2244       <h2 id="rfc.section.9.4"><a href="#rfc.section.9.4">9.4</a>&nbsp;<a id="header.host" href="#header.host">Host</a></h2>
    2245       <p id="rfc.section.9.4.p.1">The "Host" header field in a request provides the host and port information from the target resource's URI, enabling the origin
    2246          server to distinguish between resources while servicing requests for multiple host names on a single IP address. Since the
    2247          Host field-value is critical information for handling a request, it <em class="bcp14">SHOULD</em> be sent as the first header field following the Request-Line.
    2248       </p>
    2249       <div id="rfc.figure.u.61"></div><pre class="inline"><span id="rfc.iref.g.95"></span>  <a href="#header.host" class="smpl">Host</a> = <a href="#uri" class="smpl">uri-host</a> [ ":" <a href="#uri" class="smpl">port</a> ] ; <a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>
     2349            </p>
     2350            <ol>
     2351               <li>If the response status code is 100 (Continue) or 101 (Switching Protocols), the response <em class="bcp14">MAY</em> include a Date header field, at the server's option.
     2352               </li>
     2353               <li>If the response status code conveys a server error, e.g., 500 (Internal Server Error) or 503 (Service Unavailable), and it
     2354                  is inconvenient or impossible to generate a valid Date.
     2355               </li>
     2356               <li>If the server does not have a clock that can provide a reasonable approximation of the current time, its responses <em class="bcp14">MUST NOT</em> include a Date header field. In this case, the rules in <a href="#clockless.origin.server.operation" title="Clockless Origin Server Operation">Section&nbsp;9.3.1</a> <em class="bcp14">MUST</em> be followed.
     2357               </li>
     2358            </ol>
     2359            <p id="rfc.section.9.3.p.6">A received message that does not have a Date header field <em class="bcp14">MUST</em> be assigned one by the recipient if the message will be cached by that recipient.
     2360            </p>
     2361            <p id="rfc.section.9.3.p.7">Clients can use the Date header field as well; in order to keep request messages small, they are advised not to include it
     2362               when it doesn't convey any useful information (as it is usually the case for requests that do not contain a payload).
     2363            </p>
     2364            <p id="rfc.section.9.3.p.8">The HTTP-date sent in a Date header field <em class="bcp14">SHOULD NOT</em> represent a date and time subsequent to the generation of the message. It <em class="bcp14">SHOULD</em> represent the best available approximation of the date and time of message generation, unless the implementation has no means
     2365               of generating a reasonably accurate date and time. In theory, the date ought to represent the moment just before the payload
     2366               is generated. In practice, the date can be generated at any time during the message origination without affecting its semantic
     2367               value.
     2368            </p>
     2369            <div id="clockless.origin.server.operation">
     2370               <h3 id="rfc.section.9.3.1"><a href="#rfc.section.9.3.1">9.3.1</a>&nbsp;<a href="#clockless.origin.server.operation">Clockless Origin Server Operation</a></h3>
     2371               <p id="rfc.section.9.3.1.p.1">Some origin server implementations might not have a clock available. An origin server without a clock <em class="bcp14">MUST NOT</em> assign Expires or Last-Modified values to a response, unless these values were associated with the resource by a system or
     2372                  user with a reliable clock. It <em class="bcp14">MAY</em> assign an Expires value that is known, at or before server configuration time, to be in the past (this allows "pre-expiration"
     2373                  of responses without storing separate Expires values for each resource).
     2374               </p>
     2375            </div>
     2376         </div>
     2377         <div id="header.host">
     2378            <div id="rfc.iref.h.9"></div>
     2379            <div id="rfc.iref.h.10"></div>
     2380            <h2 id="rfc.section.9.4"><a href="#rfc.section.9.4">9.4</a>&nbsp;<a href="#header.host">Host</a></h2>
     2381            <p id="rfc.section.9.4.p.1">The "Host" header field in a request provides the host and port information from the target resource's URI, enabling the origin
     2382               server to distinguish between resources while servicing requests for multiple host names on a single IP address. Since the
     2383               Host field-value is critical information for handling a request, it <em class="bcp14">SHOULD</em> be sent as the first header field following the Request-Line.
     2384            </p>
     2385            <div id="rfc.figure.u.61"></div><pre class="inline"><span id="rfc.iref.g.95"></span>  <a href="#header.host" class="smpl">Host</a> = <a href="#uri" class="smpl">uri-host</a> [ ":" <a href="#uri" class="smpl">port</a> ] ; <a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>
    22502386</pre><p id="rfc.section.9.4.p.3">A client <em class="bcp14">MUST</em> send a Host header field in all HTTP/1.1 request messages. If the target resource's URI includes an authority component, then
    2251          the Host field-value <em class="bcp14">MUST</em> be identical to that authority component after excluding any userinfo (<a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>). If the authority component is missing or undefined for the target resource's URI, then the Host header field <em class="bcp14">MUST</em> be sent with an empty field-value.
    2252       </p>
    2253       <p id="rfc.section.9.4.p.4">For example, a GET request to the origin server for &lt;http://www.example.org/pub/WWW/&gt; would begin with:</p>
    2254       <div id="rfc.figure.u.62"></div><pre class="text2">GET /pub/WWW/ HTTP/1.1
     2387               the Host field-value <em class="bcp14">MUST</em> be identical to that authority component after excluding any userinfo (<a href="#http.uri" title="http URI scheme">Section&nbsp;2.7.1</a>). If the authority component is missing or undefined for the target resource's URI, then the Host header field <em class="bcp14">MUST</em> be sent with an empty field-value.
     2388            </p>
     2389            <p id="rfc.section.9.4.p.4">For example, a GET request to the origin server for &lt;http://www.example.org/pub/WWW/&gt; would begin with:</p>
     2390            <div id="rfc.figure.u.62"></div><pre class="text2">GET /pub/WWW/ HTTP/1.1
    22552391Host: www.example.org
    22562392</pre><p id="rfc.section.9.4.p.6">The Host header field <em class="bcp14">MUST</em> be sent in an HTTP/1.1 request even if the request-target is in the form of an absolute-URI, since this allows the Host information
    2257          to be forwarded through ancient HTTP/1.0 proxies that might not have implemented Host.
    2258       </p>
    2259       <p id="rfc.section.9.4.p.7">When an HTTP/1.1 proxy receives a request with a request-target in the form of an absolute-URI, the proxy <em class="bcp14">MUST</em> ignore the received Host header field (if any) and instead replace it with the host information of the request-target. When
    2260          a proxy forwards a request, it <em class="bcp14">MUST</em> generate the Host header field based on the received absolute-URI rather than the received Host.
    2261       </p>
    2262       <p id="rfc.section.9.4.p.8">Since the Host header field acts as an application-level routing mechanism, it is a frequent target for malware seeking to
    2263          poison a shared cache or redirect a request to an unintended server. An interception proxy is particularly vulnerable if it
    2264          relies on the Host header field value for redirecting requests to internal servers, or for use as a cache key in a shared
    2265          cache, without first verifying that the intercepted connection is targeting a valid IP address for that host.
    2266       </p>
    2267       <p id="rfc.section.9.4.p.9">A server <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code to any HTTP/1.1 request message that lacks a Host header field and to any request
    2268          message that contains more than one Host header field or a Host header field with an invalid field-value.
    2269       </p>
    2270       <p id="rfc.section.9.4.p.10">See Sections <a href="#the.resource.identified.by.a.request" title="The Resource Identified by a Request">4.2</a> and <a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses" title="Multi-homed Web Servers">A.1.1</a> for other requirements relating to Host.
    2271       </p>
    2272       <div id="rfc.iref.t.5"></div>
    2273       <div id="rfc.iref.h.11"></div>
    2274       <h2 id="rfc.section.9.5"><a href="#rfc.section.9.5">9.5</a>&nbsp;<a id="header.te" href="#header.te">TE</a></h2>
    2275       <p id="rfc.section.9.5.p.1">The "TE" header field indicates what extension transfer-codings it is willing to accept in the response, and whether or not
    2276          it is willing to accept trailer fields in a chunked transfer-coding.
    2277       </p>
    2278       <p id="rfc.section.9.5.p.2">Its value consists of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional
    2279          accept parameters (as described in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
    2280       </p>
    2281       <div id="rfc.figure.u.63"></div><pre class="inline"><span id="rfc.iref.g.96"></span><span id="rfc.iref.g.97"></span><span id="rfc.iref.g.98"></span><span id="rfc.iref.g.99"></span>  <a href="#header.te" class="smpl">TE</a>        = #<a href="#header.te" class="smpl">t-codings</a>
     2393               to be forwarded through ancient HTTP/1.0 proxies that might not have implemented Host.
     2394            </p>
     2395            <p id="rfc.section.9.4.p.7">When an HTTP/1.1 proxy receives a request with a request-target in the form of an absolute-URI, the proxy <em class="bcp14">MUST</em> ignore the received Host header field (if any) and instead replace it with the host information of the request-target. When
     2396               a proxy forwards a request, it <em class="bcp14">MUST</em> generate the Host header field based on the received absolute-URI rather than the received Host.
     2397            </p>
     2398            <p id="rfc.section.9.4.p.8">Since the Host header field acts as an application-level routing mechanism, it is a frequent target for malware seeking to
     2399               poison a shared cache or redirect a request to an unintended server. An interception proxy is particularly vulnerable if it
     2400               relies on the Host header field value for redirecting requests to internal servers, or for use as a cache key in a shared
     2401               cache, without first verifying that the intercepted connection is targeting a valid IP address for that host.
     2402            </p>
     2403            <p id="rfc.section.9.4.p.9">A server <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code to any HTTP/1.1 request message that lacks a Host header field and to any request
     2404               message that contains more than one Host header field or a Host header field with an invalid field-value.
     2405            </p>
     2406            <p id="rfc.section.9.4.p.10">See Sections <a href="#the.resource.identified.by.a.request" title="The Resource Identified by a Request">4.2</a> and <a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses" title="Multi-homed Web Servers">A.1.1</a> for other requirements relating to Host.
     2407            </p>
     2408         </div>
     2409         <div id="header.te">
     2410            <div id="rfc.iref.t.5"></div>
     2411            <div id="rfc.iref.h.11"></div>
     2412            <h2 id="rfc.section.9.5"><a href="#rfc.section.9.5">9.5</a>&nbsp;<a href="#header.te">TE</a></h2>
     2413            <p id="rfc.section.9.5.p.1">The "TE" header field indicates what extension transfer-codings it is willing to accept in the response, and whether or not
     2414               it is willing to accept trailer fields in a chunked transfer-coding.
     2415            </p>
     2416            <p id="rfc.section.9.5.p.2">Its value consists of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional
     2417               accept parameters (as described in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
     2418            </p>
     2419            <div id="rfc.figure.u.63"></div><pre class="inline"><span id="rfc.iref.g.96"></span><span id="rfc.iref.g.97"></span><span id="rfc.iref.g.98"></span><span id="rfc.iref.g.99"></span>  <a href="#header.te" class="smpl">TE</a>        = #<a href="#header.te" class="smpl">t-codings</a>
    22822420  <a href="#header.te" class="smpl">t-codings</a> = "trailers" / ( <a href="#transfer.codings" class="smpl">transfer-extension</a> [ <a href="#header.te" class="smpl">te-params</a> ] )
    22832421  <a href="#header.te" class="smpl">te-params</a> = <a href="#rule.whitespace" class="smpl">OWS</a> ";" <a href="#rule.whitespace" class="smpl">OWS</a> "q=" <a href="#quality.values" class="smpl">qvalue</a> *( <a href="#header.te" class="smpl">te-ext</a> )
    22842422  <a href="#header.te" class="smpl">te-ext</a>    = <a href="#rule.whitespace" class="smpl">OWS</a> ";" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#rule.token.separators" class="smpl">token</a> [ "=" <a href="#rule.token.separators" class="smpl">word</a> ]
    22852423</pre><p id="rfc.section.9.5.p.4">The presence of the keyword "trailers" indicates that the client is willing to accept trailer fields in a chunked transfer-coding,
    2286          as defined in <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>. This keyword is reserved for use with transfer-coding values even though it does not itself represent a transfer-coding.
    2287       </p>
    2288       <p id="rfc.section.9.5.p.5">Examples of its use are:</p>
    2289       <div id="rfc.figure.u.64"></div><pre class="text">  TE: deflate
     2424               as defined in <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>. This keyword is reserved for use with transfer-coding values even though it does not itself represent a transfer-coding.
     2425            </p>
     2426            <p id="rfc.section.9.5.p.5">Examples of its use are:</p>
     2427            <div id="rfc.figure.u.64"></div><pre class="text">  TE: deflate
    22902428  TE:
    22912429  TE: trailers, deflate;q=0.5
    22922430</pre><p id="rfc.section.9.5.p.7">The TE header field only applies to the immediate connection. Therefore, the keyword <em class="bcp14">MUST</em> be supplied within a Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.8" title="Connection">Section&nbsp;9.1</a>) whenever TE is present in an HTTP/1.1 message.
    2293       </p>
    2294       <p id="rfc.section.9.5.p.8">A server tests whether a transfer-coding is acceptable, according to a TE field, using these rules: </p>
    2295       <ol>
    2296          <li>
    2297             <p>The "chunked" transfer-coding is always acceptable. If the keyword "trailers" is listed, the client indicates that it is willing
    2298                to accept trailer fields in the chunked response on behalf of itself and any downstream clients. The implication is that,
    2299                if given, the client is stating that either all downstream clients are willing to accept trailer fields in the forwarded response,
    2300                or that it will attempt to buffer the response on behalf of downstream recipients.
    2301             </p>
    2302             <p> <b>Note:</b> HTTP/1.1 does not define any means to limit the size of a chunked response such that a client can be assured of buffering
    2303                the entire response.
    2304             </p>
    2305          </li>
    2306          <li>
    2307             <p>If the transfer-coding being tested is one of the transfer-codings listed in the TE field, then it is acceptable unless it
    2308                is accompanied by a qvalue of 0. (As defined in <a href="#quality.values" title="Quality Values">Section&nbsp;6.4</a>, a qvalue of 0 means "not acceptable".)
    2309             </p>
    2310          </li>
    2311          <li>
    2312             <p>If multiple transfer-codings are acceptable, then the acceptable transfer-coding with the highest non-zero qvalue is preferred.
    2313                The "chunked" transfer-coding always has a qvalue of 1.
    2314             </p>
    2315          </li>
    2316       </ol>
    2317       <p id="rfc.section.9.5.p.9">If the TE field-value is empty or if no TE field is present, the only transfer-coding is "chunked". A message with no transfer-coding
    2318          is always acceptable.
    2319       </p>
    2320       <div id="rfc.iref.t.6"></div>
    2321       <div id="rfc.iref.h.12"></div>
    2322       <h2 id="rfc.section.9.6"><a href="#rfc.section.9.6">9.6</a>&nbsp;<a id="header.trailer" href="#header.trailer">Trailer</a></h2>
    2323       <p id="rfc.section.9.6.p.1">The "Trailer" header field indicates that the given set of header fields is present in the trailer of a message encoded with
    2324          chunked transfer-coding.
    2325       </p>
    2326       <div id="rfc.figure.u.65"></div><pre class="inline"><span id="rfc.iref.g.100"></span>  <a href="#header.trailer" class="smpl">Trailer</a> = 1#<a href="#header.fields" class="smpl">field-name</a>
     2431            </p>
     2432            <p id="rfc.section.9.5.p.8">A server tests whether a transfer-coding is acceptable, according to a TE field, using these rules: </p>
     2433            <ol>
     2434               <li>
     2435                  <p>The "chunked" transfer-coding is always acceptable. If the keyword "trailers" is listed, the client indicates that it is willing
     2436                     to accept trailer fields in the chunked response on behalf of itself and any downstream clients. The implication is that,
     2437                     if given, the client is stating that either all downstream clients are willing to accept trailer fields in the forwarded response,
     2438                     or that it will attempt to buffer the response on behalf of downstream recipients.
     2439                  </p>
     2440                  <p><b>Note:</b> HTTP/1.1 does not define any means to limit the size of a chunked response such that a client can be assured of buffering
     2441                     the entire response.
     2442                  </p>
     2443               </li>
     2444               <li>
     2445                  <p>If the transfer-coding being tested is one of the transfer-codings listed in the TE field, then it is acceptable unless it
     2446                     is accompanied by a qvalue of 0. (As defined in <a href="#quality.values" title="Quality Values">Section&nbsp;6.4</a>, a qvalue of 0 means "not acceptable".)
     2447                  </p>
     2448               </li>
     2449               <li>
     2450                  <p>If multiple transfer-codings are acceptable, then the acceptable transfer-coding with the highest non-zero qvalue is preferred.
     2451                     The "chunked" transfer-coding always has a qvalue of 1.
     2452                  </p>
     2453               </li>
     2454            </ol>
     2455            <p id="rfc.section.9.5.p.9">If the TE field-value is empty or if no TE field is present, the only transfer-coding is "chunked". A message with no transfer-coding
     2456               is always acceptable.
     2457            </p>
     2458         </div>
     2459         <div id="header.trailer">
     2460            <div id="rfc.iref.t.6"></div>
     2461            <div id="rfc.iref.h.12"></div>
     2462            <h2 id="rfc.section.9.6"><a href="#rfc.section.9.6">9.6</a>&nbsp;<a href="#header.trailer">Trailer</a></h2>
     2463            <p id="rfc.section.9.6.p.1">The "Trailer" header field indicates that the given set of header fields is present in the trailer of a message encoded with
     2464               chunked transfer-coding.
     2465            </p>
     2466            <div id="rfc.figure.u.65"></div><pre class="inline"><span id="rfc.iref.g.100"></span>  <a href="#header.trailer" class="smpl">Trailer</a> = 1#<a href="#header.fields" class="smpl">field-name</a>
    23272467</pre><p id="rfc.section.9.6.p.3">An HTTP/1.1 message <em class="bcp14">SHOULD</em> include a Trailer header field in a message using chunked transfer-coding with a non-empty trailer. Doing so allows the recipient
    2328          to know which header fields to expect in the trailer.
    2329       </p>
    2330       <p id="rfc.section.9.6.p.4">If no Trailer header field is present, the trailer <em class="bcp14">SHOULD NOT</em> include any header fields. See <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a> for restrictions on the use of trailer fields in a "chunked" transfer-coding.
    2331       </p>
    2332       <p id="rfc.section.9.6.p.5">Message header fields listed in the Trailer header field <em class="bcp14">MUST NOT</em> include the following header fields:
    2333       </p>
    2334       <ul>
    2335          <li>Transfer-Encoding</li>
    2336          <li>Content-Length</li>
    2337          <li>Trailer</li>
    2338       </ul>
    2339       <div id="rfc.iref.t.7"></div>
    2340       <div id="rfc.iref.h.13"></div>
    2341       <h2 id="rfc.section.9.7"><a href="#rfc.section.9.7">9.7</a>&nbsp;<a id="header.transfer-encoding" href="#header.transfer-encoding">Transfer-Encoding</a></h2>
    2342       <p id="rfc.section.9.7.p.1">The "Transfer-Encoding" header field indicates what transfer-codings (if any) have been applied to the message body. It differs
    2343          from Content-Encoding (<a href="p3-payload.html#content.codings" title="Content Codings">Section 2.2</a> of <a href="#Part3" id="rfc.xref.Part3.5"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) in that transfer-codings are a property of the message (and therefore are removed by intermediaries), whereas content-codings
    2344          are not.
    2345       </p>
    2346       <div id="rfc.figure.u.66"></div><pre class="inline"><span id="rfc.iref.g.101"></span>  <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a> = 1#<a href="#transfer.codings" class="smpl">transfer-coding</a>
     2468               to know which header fields to expect in the trailer.
     2469            </p>
     2470            <p id="rfc.section.9.6.p.4">If no Trailer header field is present, the trailer <em class="bcp14">SHOULD NOT</em> include any header fields. See <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a> for restrictions on the use of trailer fields in a "chunked" transfer-coding.
     2471            </p>
     2472            <p id="rfc.section.9.6.p.5">Message header fields listed in the Trailer header field <em class="bcp14">MUST NOT</em> include the following header fields:
     2473            </p>
     2474            <ul>
     2475               <li>Transfer-Encoding</li>
     2476               <li>Content-Length</li>
     2477               <li>Trailer</li>
     2478            </ul>
     2479         </div>
     2480         <div id="header.transfer-encoding">
     2481            <div id="rfc.iref.t.7"></div>
     2482            <div id="rfc.iref.h.13"></div>
     2483            <h2 id="rfc.section.9.7"><a href="#rfc.section.9.7">9.7</a>&nbsp;<a href="#header.transfer-encoding">Transfer-Encoding</a></h2>
     2484            <p id="rfc.section.9.7.p.1">The "Transfer-Encoding" header field indicates what transfer-codings (if any) have been applied to the message body. It differs
     2485               from Content-Encoding (<a href="p3-payload.html#content.codings" title="Content Codings">Section 2.2</a> of <a href="#Part3" id="rfc.xref.Part3.5"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) in that transfer-codings are a property of the message (and therefore are removed by intermediaries), whereas content-codings
     2486               are not.
     2487            </p>
     2488            <div id="rfc.figure.u.66"></div><pre class="inline"><span id="rfc.iref.g.101"></span>  <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a> = 1#<a href="#transfer.codings" class="smpl">transfer-coding</a>
    23472489</pre><p id="rfc.section.9.7.p.3">Transfer-codings are defined in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>. An example is:
    2348       </p>
    2349       <div id="rfc.figure.u.67"></div><pre class="text">  Transfer-Encoding: chunked
     2490            </p>
     2491            <div id="rfc.figure.u.67"></div><pre class="text">  Transfer-Encoding: chunked
    23502492</pre><p id="rfc.section.9.7.p.5">If multiple encodings have been applied to a representation, the transfer-codings <em class="bcp14">MUST</em> be listed in the order in which they were applied. Additional information about the encoding parameters <em class="bcp14">MAY</em> be provided by other header fields not defined by this specification.
    2351       </p>
    2352       <p id="rfc.section.9.7.p.6">Many older HTTP/1.0 applications do not understand the Transfer-Encoding header field.</p>
    2353       <div id="rfc.iref.u.5"></div>
    2354       <div id="rfc.iref.h.14"></div>
    2355       <h2 id="rfc.section.9.8"><a href="#rfc.section.9.8">9.8</a>&nbsp;<a id="header.upgrade" href="#header.upgrade">Upgrade</a></h2>
    2356       <p id="rfc.section.9.8.p.1">The "Upgrade" header field allows the client to specify what additional communication protocols it would like to use, if the
    2357          server chooses to switch protocols. Servers can use it to indicate what protocols they are willing to switch to.
    2358       </p>
    2359       <div id="rfc.figure.u.68"></div><pre class="inline"><span id="rfc.iref.g.102"></span>  <a href="#header.upgrade" class="smpl">Upgrade</a> = 1#<a href="#product.tokens" class="smpl">product</a>
     2493            </p>
     2494            <p id="rfc.section.9.7.p.6">Many older HTTP/1.0 applications do not understand the Transfer-Encoding header field.</p>
     2495         </div>
     2496         <div id="header.upgrade">
     2497            <div id="rfc.iref.u.5"></div>