Changeset 2726 for draft-ietf-httpbis/09


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

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

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

Legend:

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

    r1099 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;
     82}
     83ol.la {
     84  list-style-type: lower-alpha;
     85}
     86ol.ua {
     87  list-style-type: upper-alpha;
    8788}
    8889ol p {
     
    9192p {
    9293  margin-left: 2em;
    93   margin-right: 2em;
    9494}
    9595pre {
     
    9797  background-color: lightyellow;
    9898  padding: .25em;
     99  page-break-inside: avoid;
    99100}
    100101pre.text2 {
     
    125126table.tt {
    126127  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;
    127139}
    128140table.full {
    129   border-style: outset;
    130   border-width: 1px;
    131 }
    132 table.headers {
    133   border-style: outset;
    134   border-width: 1px;
     141  border-style: solid;
     142  border-width: 2px;
    135143}
    136144table.tt td {
    137145  vertical-align: top;
    138146}
     147table.all td {
     148  border-style: solid;
     149  border-width: 1px;
     150}
    139151table.full td {
    140   border-style: inset;
     152  border-style: none solid;
    141153  border-width: 1px;
    142154}
     
    144156  vertical-align: top;
    145157}
     158table.all th {
     159  border-style: solid;
     160  border-width: 1px;
     161}
    146162table.full th {
    147   border-style: inset;
    148   border-width: 1px;
     163  border-style: solid;
     164  border-width: 1px 1px 2px 1px;
    149165}
    150166table.headers th {
    151   border-style: none none inset none;
    152   border-width: 1px;
     167  border-style: none none solid none;
     168  border-width: 2px;
    153169}
    154170table.left {
     
    165181  caption-side: bottom;
    166182  font-weight: bold;
    167   font-size: 9pt;
     183  font-size: 10pt;
    168184  margin-top: .5em;
    169185}
     
    172188  border-spacing: 1px;
    173189  width: 95%;
    174   font-size: 10pt;
     190  font-size: 11pt;
    175191  color: white;
    176192}
     
    180196td.topnowrap {
    181197  vertical-align: top;
    182   white-space: nowrap; 
     198  white-space: nowrap;
    183199}
    184200table.header td {
     
    200216  list-style: none;
    201217  margin-left: 1.5em;
    202   margin-right: 0em;
    203218  padding-left: 0em;
    204219}
     
    206221  line-height: 150%;
    207222  font-weight: bold;
    208   font-size: 10pt;
    209223  margin-left: 0em;
    210   margin-right: 0em;
    211224}
    212225ul.toc li li {
    213226  line-height: normal;
    214227  font-weight: normal;
    215   font-size: 9pt;
     228  font-size: 10pt;
    216229  margin-left: 0em;
    217   margin-right: 0em;
    218230}
    219231li.excluded {
     
    222234ul p {
    223235  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;
    224242}
    225243ul.ind, ul.ind ul {
    226244  list-style: none;
    227245  margin-left: 1.5em;
    228   margin-right: 0em;
    229246  padding-left: 0em;
    230247  page-break-before: avoid;
     
    234251  line-height: 200%;
    235252  margin-left: 0em;
    236   margin-right: 0em;
    237253}
    238254ul.ind li li {
     
    240256  line-height: 150%;
    241257  margin-left: 0em;
    242   margin-right: 0em;
    243258}
    244259.avoidbreak {
     
    264279  font-weight: bold;
    265280  text-align: center;
    266   font-size: 9pt;
     281  font-size: 10pt;
    267282}
    268283.filename {
    269284  color: #333333;
     285  font-size: 75%;
    270286  font-weight: bold;
    271   font-size: 12pt;
    272287  line-height: 21pt;
    273288  text-align: center;
     
    276291  font-weight: bold;
    277292}
    278 .hidden {
    279   display: none;
    280 }
    281293.left {
    282294  text-align: left;
     
    286298}
    287299.title {
    288   color: #990000;
    289   font-size: 18pt;
     300  color: green;
     301  font-size: 150%;
    290302  line-height: 18pt;
    291303  font-weight: bold;
     
    293305  margin-top: 36pt;
    294306}
    295 .vcardline {
    296   display: block;
    297 }
    298307.warning {
    299   font-size: 14pt;
     308  font-size: 130%;
    300309  background-color: yellow;
    301310}
     
    306315    display: none;
    307316  }
    308  
     317
    309318  a {
    310319    color: black;
     
    321330    background-color: white;
    322331    vertical-align: top;
    323     font-size: 12pt;
     332    font-size: 110%;
    324333  }
    325334
    326   ul.toc a::after {
     335  ul.toc a:nth-child(2)::after {
    327336    content: leader('.') target-counter(attr(href), page);
    328337  }
    329  
     338
    330339  ul.ind li li a {
    331340    content: target-counter(attr(href), page);
    332341  }
    333  
     342
    334343  .print2col {
    335344    column-count: 2;
     
    341350@page {
    342351  @top-left {
    343        content: "Internet-Draft"; 
    344   } 
     352       content: "Internet-Draft";
     353  }
    345354  @top-right {
    346        content: "March 2010"; 
    347   } 
     355       content: "March 2010";
     356  }
    348357  @top-center {
    349        content: "HTTP/1.1, Part 1"; 
    350   } 
     358       content: "HTTP/1.1, Part 1";
     359  }
    351360  @bottom-left {
    352        content: "Fielding, et al."; 
    353   } 
     361       content: "Fielding, et al.";
     362  }
    354363  @bottom-center {
    355        content: "Standards Track";
    356   } 
     364       content: "Expires September 9, 2010";
     365  }
    357366  @bottom-right {
    358        content: "[Page " counter(page) "]"; 
    359   } 
    360 }
    361 
    362 @page:first { 
     367       content: "[Page " counter(page) "]";
     368  }
     369}
     370
     371@page:first {
    363372    @top-left {
    364373      content: normal;
     
    392401      <link rel="Appendix" title="C Collected ABNF" href="#rfc.section.C">
    393402      <link rel="Appendix" title="D Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.D">
    394       <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.537, 2010-12-30 14:21:59, XSLT vendor: SAXON 8.9 from Saxonica http://www.saxonica.com/">
     403      <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/">
    395404      <link rel="schema.dct" href="http://purl.org/dc/terms/">
    396405      <meta name="dct.creator" content="Fielding, R.">
     
    421430            </tr>
    422431            <tr>
    423                <td class="left">Obsoletes: <a href="http://tools.ietf.org/html/rfc2616">2616</a> (if approved)
     432               <td class="left">Obsoletes: <a href="https://tools.ietf.org/html/rfc2616">2616</a> (if approved)
    424433               </td>
    425434               <td class="right">J. Gettys</td>
    426435            </tr>
    427436            <tr>
    428                <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)
    429438               </td>
    430439               <td class="right">One Laptop per Child</td>
     
    493502      </table>
    494503      <p class="title">HTTP/1.1, part 1: URIs, Connections, and Message Parsing<br><span class="filename">draft-ietf-httpbis-p1-messaging-09</span></p>
    495       <h1 id="rfc.abstract"><a href="#rfc.abstract">Abstract</a></h1> 
     504      <h1 id="rfc.abstract"><a href="#rfc.abstract">Abstract</a></h1>
    496505      <p>The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information
    497506         systems. HTTP has been in use by the World Wide Web global information initiative since 1990. This document is Part 1 of the
     
    500509         (URI) schemes, defines the generic message syntax and parsing requirements for HTTP message frames, and describes general
    501510         security concerns for implementations.
    502       </p> 
    503       <h1 id="rfc.note.1"><a href="#rfc.note.1">Editorial Note (To be removed by RFC Editor)</a></h1> 
     511      </p>
     512      <h1 id="rfc.note.1"><a href="#rfc.note.1">Editorial Note (To be removed by RFC Editor)</a></h1>
    504513      <p>Discussion of this draft should take place on the HTTPBIS working group mailing list (ietf-http-wg@w3.org). The current issues
    505514         list is at &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/report/11">http://tools.ietf.org/wg/httpbis/trac/report/11</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;.
    506       </p> 
     515      </p>
    507516      <p>The changes in this draft are summarized in <a href="#changes.since.08" title="Since draft-ietf-httpbis-p1-messaging-08">Appendix&nbsp;D.10</a>.
    508       </p>
    509       <h1><a id="rfc.status" href="#rfc.status">Status of this Memo</a></h1>
    510       <p>This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.</p>
    511       <p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note
    512          that other groups may also distribute working documents as Internet-Drafts.
    513517      </p>
    514       <p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other
    515          documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work
    516          in progress”.
    517       </p>
    518       <p>The list of current Internet-Drafts can be accessed at <a href="http://www.ietf.org/ietf/1id-abstracts.txt">http://www.ietf.org/ietf/1id-abstracts.txt</a>.
    519       </p>
    520       <p>The list of Internet-Draft Shadow Directories can be accessed at <a href="http://www.ietf.org/shadow.html">http://www.ietf.org/shadow.html</a>.
    521       </p>
    522       <p>This Internet-Draft will expire on September 9, 2010.</p>
    523       <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1>
    524       <p>Copyright © 2010 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
    525       <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
    526          and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License
    527          text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.
    528       </p>
    529       <p>This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November
    530          10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to
    531          allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s)
    532          controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative
    533          works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate
    534          it into languages other than English.
    535       </p>
     518      <div id="rfc.status">
     519         <h1><a href="#rfc.status">Status of this Memo</a></h1>
     520         <p>This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.</p>
     521         <p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note
     522            that other groups may also distribute working documents as Internet-Drafts.
     523         </p>
     524         <p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other
     525            documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work
     526            in progress”.
     527         </p>
     528         <p>The list of current Internet-Drafts can be accessed at <a href="http://www.ietf.org/ietf/1id-abstracts.txt">http://www.ietf.org/ietf/1id-abstracts.txt</a>.
     529         </p>
     530         <p>The list of Internet-Draft Shadow Directories can be accessed at <a href="http://www.ietf.org/shadow.html">http://www.ietf.org/shadow.html</a>.
     531         </p>
     532         <p>This Internet-Draft will expire on September 9, 2010.</p>
     533      </div>
     534      <div id="rfc.copyrightnotice">
     535         <h1><a href="#rfc.copyrightnotice">Copyright Notice</a></h1>
     536         <p>Copyright © 2010 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
     537         <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
     538            and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License
     539            text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.
     540         </p>
     541         <p>This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November
     542            10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to
     543            allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s)
     544            controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative
     545            works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate
     546            it into languages other than English.
     547         </p>
     548      </div>
    536549      <hr class="noprint">
    537550      <h1 class="np" id="rfc.toc"><a href="#rfc.toc">Table of Contents</a></h1>
    538551      <ul class="toc">
    539          <li>1.&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a><ul>
    540                <li>1.1&nbsp;&nbsp;&nbsp;<a href="#intro.requirements">Requirements</a></li>
    541                <li>1.2&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a><ul>
    542                      <li>1.2.1&nbsp;&nbsp;&nbsp;<a href="#notation.abnf">ABNF Extension: #rule</a></li>
    543                      <li>1.2.2&nbsp;&nbsp;&nbsp;<a href="#basic.rules">Basic Rules</a></li>
    544                      <li>1.2.3&nbsp;&nbsp;&nbsp;<a href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></li>
     552         <li><a href="#rfc.section.1">1.</a>&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a><ul>
     553               <li><a href="#rfc.section.1.1">1.1</a>&nbsp;&nbsp;&nbsp;<a href="#intro.requirements">Requirements</a></li>
     554               <li><a href="#rfc.section.1.2">1.2</a>&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a><ul>
     555                     <li><a href="#rfc.section.1.2.1">1.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#notation.abnf">ABNF Extension: #rule</a></li>
     556                     <li><a href="#rfc.section.1.2.2">1.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#basic.rules">Basic Rules</a></li>
     557                     <li><a href="#rfc.section.1.2.3">1.2.3</a>&nbsp;&nbsp;&nbsp;<a href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></li>
    545558                  </ul>
    546559               </li>
    547560            </ul>
    548561         </li>
    549          <li>2.&nbsp;&nbsp;&nbsp;<a href="#architecture">HTTP architecture</a><ul>
    550                <li>2.1&nbsp;&nbsp;&nbsp;<a href="#operation">Client/Server Operation</a></li>
    551                <li>2.2&nbsp;&nbsp;&nbsp;<a href="#intermediaries">Intermediaries</a></li>
    552                <li>2.3&nbsp;&nbsp;&nbsp;<a href="#caches">Caches</a></li>
    553                <li>2.4&nbsp;&nbsp;&nbsp;<a href="#transport-independence">Transport Independence</a></li>
    554                <li>2.5&nbsp;&nbsp;&nbsp;<a href="#http.version">HTTP Version</a></li>
    555                <li>2.6&nbsp;&nbsp;&nbsp;<a href="#uri">Uniform Resource Identifiers</a><ul>
    556                      <li>2.6.1&nbsp;&nbsp;&nbsp;<a href="#http.uri">http URI scheme</a></li>
    557                      <li>2.6.2&nbsp;&nbsp;&nbsp;<a href="#https.uri">https URI scheme</a></li>
    558                      <li>2.6.3&nbsp;&nbsp;&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></li>
     562         <li><a href="#rfc.section.2">2.</a>&nbsp;&nbsp;&nbsp;<a href="#architecture">HTTP architecture</a><ul>
     563               <li><a href="#rfc.section.2.1">2.1</a>&nbsp;&nbsp;&nbsp;<a href="#operation">Client/Server Operation</a></li>
     564               <li><a href="#rfc.section.2.2">2.2</a>&nbsp;&nbsp;&nbsp;<a href="#intermediaries">Intermediaries</a></li>
     565               <li><a href="#rfc.section.2.3">2.3</a>&nbsp;&nbsp;&nbsp;<a href="#caches">Caches</a></li>
     566               <li><a href="#rfc.section.2.4">2.4</a>&nbsp;&nbsp;&nbsp;<a href="#transport-independence">Transport Independence</a></li>
     567               <li><a href="#rfc.section.2.5">2.5</a>&nbsp;&nbsp;&nbsp;<a href="#http.version">HTTP Version</a></li>
     568               <li><a href="#rfc.section.2.6">2.6</a>&nbsp;&nbsp;&nbsp;<a href="#uri">Uniform Resource Identifiers</a><ul>
     569                     <li><a href="#rfc.section.2.6.1">2.6.1</a>&nbsp;&nbsp;&nbsp;<a href="#http.uri">http URI scheme</a></li>
     570                     <li><a href="#rfc.section.2.6.2">2.6.2</a>&nbsp;&nbsp;&nbsp;<a href="#https.uri">https URI scheme</a></li>
     571                     <li><a href="#rfc.section.2.6.3">2.6.3</a>&nbsp;&nbsp;&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></li>
    559572                  </ul>
    560573               </li>
    561574            </ul>
    562575         </li>
    563          <li>3.&nbsp;&nbsp;&nbsp;<a href="#http.message">HTTP Message</a><ul>
    564                <li>3.1&nbsp;&nbsp;&nbsp;<a href="#message.robustness">Message Parsing Robustness</a></li>
    565                <li>3.2&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Fields</a></li>
    566                <li>3.3&nbsp;&nbsp;&nbsp;<a href="#message.body">Message Body</a></li>
    567                <li>3.4&nbsp;&nbsp;&nbsp;<a href="#message.length">Message Length</a></li>
    568                <li>3.5&nbsp;&nbsp;&nbsp;<a href="#general.header.fields">General Header Fields</a></li>
     576         <li><a href="#rfc.section.3">3.</a>&nbsp;&nbsp;&nbsp;<a href="#http.message">HTTP Message</a><ul>
     577               <li><a href="#rfc.section.3.1">3.1</a>&nbsp;&nbsp;&nbsp;<a href="#message.robustness">Message Parsing Robustness</a></li>
     578               <li><a href="#rfc.section.3.2">3.2</a>&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Fields</a></li>
     579               <li><a href="#rfc.section.3.3">3.3</a>&nbsp;&nbsp;&nbsp;<a href="#message.body">Message Body</a></li>
     580               <li><a href="#rfc.section.3.4">3.4</a>&nbsp;&nbsp;&nbsp;<a href="#message.length">Message Length</a></li>
     581               <li><a href="#rfc.section.3.5">3.5</a>&nbsp;&nbsp;&nbsp;<a href="#general.header.fields">General Header Fields</a></li>
    569582            </ul>
    570583         </li>
    571          <li>4.&nbsp;&nbsp;&nbsp;<a href="#request">Request</a><ul>
    572                <li>4.1&nbsp;&nbsp;&nbsp;<a href="#request-line">Request-Line</a><ul>
    573                      <li>4.1.1&nbsp;&nbsp;&nbsp;<a href="#method">Method</a></li>
    574                      <li>4.1.2&nbsp;&nbsp;&nbsp;<a href="#request-target">request-target</a></li>
     584         <li><a href="#rfc.section.4">4.</a>&nbsp;&nbsp;&nbsp;<a href="#request">Request</a><ul>
     585               <li><a href="#rfc.section.4.1">4.1</a>&nbsp;&nbsp;&nbsp;<a href="#request-line">Request-Line</a><ul>
     586                     <li><a href="#rfc.section.4.1.1">4.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#method">Method</a></li>
     587                     <li><a href="#rfc.section.4.1.2">4.1.2</a>&nbsp;&nbsp;&nbsp;<a href="#request-target">request-target</a></li>
    575588                  </ul>
    576589               </li>
    577                <li>4.2&nbsp;&nbsp;&nbsp;<a href="#the.resource.identified.by.a.request">The Resource Identified by a Request</a></li>
     590               <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>
    578591            </ul>
    579592         </li>
    580          <li>5.&nbsp;&nbsp;&nbsp;<a href="#response">Response</a><ul>
    581                <li>5.1&nbsp;&nbsp;&nbsp;<a href="#status-line">Status-Line</a><ul>
    582                      <li>5.1.1&nbsp;&nbsp;&nbsp;<a href="#status.code.and.reason.phrase">Status Code and Reason Phrase</a></li>
     593         <li><a href="#rfc.section.5">5.</a>&nbsp;&nbsp;&nbsp;<a href="#response">Response</a><ul>
     594               <li><a href="#rfc.section.5.1">5.1</a>&nbsp;&nbsp;&nbsp;<a href="#status-line">Status-Line</a><ul>
     595                     <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>
    583596                  </ul>
    584597               </li>
    585598            </ul>
    586599         </li>
    587          <li>6.&nbsp;&nbsp;&nbsp;<a href="#protocol.parameters">Protocol Parameters</a><ul>
    588                <li>6.1&nbsp;&nbsp;&nbsp;<a href="#date.time.formats.full.date">Date/Time Formats: Full Date</a></li>
    589                <li>6.2&nbsp;&nbsp;&nbsp;<a href="#transfer.codings">Transfer Codings</a><ul>
    590                      <li>6.2.1&nbsp;&nbsp;&nbsp;<a href="#chunked.encoding">Chunked Transfer Coding</a></li>
    591                      <li>6.2.2&nbsp;&nbsp;&nbsp;<a href="#compression.codings">Compression Codings</a><ul>
    592                            <li>6.2.2.1&nbsp;&nbsp;&nbsp;<a href="#compress.coding">Compress Coding</a></li>
    593                            <li>6.2.2.2&nbsp;&nbsp;&nbsp;<a href="#deflate.coding">Deflate Coding</a></li>
    594                            <li>6.2.2.3&nbsp;&nbsp;&nbsp;<a href="#gzip.coding">Gzip Coding</a></li>
    595                         </ul>
    596                      </li>
    597                      <li>6.2.3&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registry">Transfer Coding Registry</a></li>
     600         <li><a href="#rfc.section.6">6.</a>&nbsp;&nbsp;&nbsp;<a href="#protocol.parameters">Protocol Parameters</a><ul>
     601               <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>
     602               <li><a href="#rfc.section.6.2">6.2</a>&nbsp;&nbsp;&nbsp;<a href="#transfer.codings">Transfer Codings</a><ul>
     603                     <li><a href="#rfc.section.6.2.1">6.2.1</a>&nbsp;&nbsp;&nbsp;<a href="#chunked.encoding">Chunked Transfer Coding</a></li>
     604                     <li><a href="#rfc.section.6.2.2">6.2.2</a>&nbsp;&nbsp;&nbsp;<a href="#compression.codings">Compression Codings</a></li>
     605                     <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>
    598606                  </ul>
    599607               </li>
    600                <li>6.3&nbsp;&nbsp;&nbsp;<a href="#product.tokens">Product Tokens</a></li>
    601                <li>6.4&nbsp;&nbsp;&nbsp;<a href="#quality.values">Quality Values</a></li>
     608               <li><a href="#rfc.section.6.3">6.3</a>&nbsp;&nbsp;&nbsp;<a href="#product.tokens">Product Tokens</a></li>
     609               <li><a href="#rfc.section.6.4">6.4</a>&nbsp;&nbsp;&nbsp;<a href="#quality.values">Quality Values</a></li>
    602610            </ul>
    603611         </li>
    604          <li>7.&nbsp;&nbsp;&nbsp;<a href="#connections">Connections</a><ul>
    605                <li>7.1&nbsp;&nbsp;&nbsp;<a href="#persistent.connections">Persistent Connections</a><ul>
    606                      <li>7.1.1&nbsp;&nbsp;&nbsp;<a href="#persistent.purpose">Purpose</a></li>
    607                      <li>7.1.2&nbsp;&nbsp;&nbsp;<a href="#persistent.overall">Overall Operation</a><ul>
    608                            <li>7.1.2.1&nbsp;&nbsp;&nbsp;<a href="#persistent.negotiation">Negotiation</a></li>
    609                            <li>7.1.2.2&nbsp;&nbsp;&nbsp;<a href="#pipelining">Pipelining</a></li>
    610                         </ul>
    611                      </li>
    612                      <li>7.1.3&nbsp;&nbsp;&nbsp;<a href="#persistent.proxy">Proxy Servers</a><ul>
    613                            <li>7.1.3.1&nbsp;&nbsp;&nbsp;<a href="#end-to-end.and.hop-by-hop.headers">End-to-end and Hop-by-hop Headers</a></li>
    614                            <li>7.1.3.2&nbsp;&nbsp;&nbsp;<a href="#non-modifiable.headers">Non-modifiable Headers</a></li>
    615                         </ul>
    616                      </li>
    617                      <li>7.1.4&nbsp;&nbsp;&nbsp;<a href="#persistent.practical">Practical Considerations</a></li>
     612         <li><a href="#rfc.section.7">7.</a>&nbsp;&nbsp;&nbsp;<a href="#connections">Connections</a><ul>
     613               <li><a href="#rfc.section.7.1">7.1</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.connections">Persistent Connections</a><ul>
     614                     <li><a href="#rfc.section.7.1.1">7.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.purpose">Purpose</a></li>
     615                     <li><a href="#rfc.section.7.1.2">7.1.2</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.overall">Overall Operation</a></li>
     616                     <li><a href="#rfc.section.7.1.3">7.1.3</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.proxy">Proxy Servers</a></li>
     617                     <li><a href="#rfc.section.7.1.4">7.1.4</a>&nbsp;&nbsp;&nbsp;<a href="#persistent.practical">Practical Considerations</a></li>
    618618                  </ul>
    619619               </li>
    620                <li>7.2&nbsp;&nbsp;&nbsp;<a href="#message.transmission.requirements">Message Transmission Requirements</a><ul>
    621                      <li>7.2.1&nbsp;&nbsp;&nbsp;<a href="#persistent.flow">Persistent Connections and Flow Control</a></li>
    622                      <li>7.2.2&nbsp;&nbsp;&nbsp;<a href="#persistent.monitor">Monitoring Connections for Error Status Messages</a></li>
    623                      <li>7.2.3&nbsp;&nbsp;&nbsp;<a href="#use.of.the.100.status">Use of the 100 (Continue) Status</a></li>
    624                      <li>7.2.4&nbsp;&nbsp;&nbsp;<a href="#connection.premature">Client Behavior if Server Prematurely Closes Connection</a></li>
     620               <li><a href="#rfc.section.7.2">7.2</a>&nbsp;&nbsp;&nbsp;<a href="#message.transmission.requirements">Message Transmission Requirements</a><ul>
     621                     <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>
     622                     <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>
     623                     <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>
     624                     <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>
    625625                  </ul>
    626626               </li>
    627627            </ul>
    628628         </li>
    629          <li>8.&nbsp;&nbsp;&nbsp;<a href="#misc">Miscellaneous notes that may disappear</a><ul>
    630                <li>8.1&nbsp;&nbsp;&nbsp;<a href="#scheme.aliases">Scheme aliases considered harmful</a></li>
    631                <li>8.2&nbsp;&nbsp;&nbsp;<a href="#http.proxy">Use of HTTP for proxy communication</a></li>
    632                <li>8.3&nbsp;&nbsp;&nbsp;<a href="#http.intercept">Interception of HTTP for access control</a></li>
    633                <li>8.4&nbsp;&nbsp;&nbsp;<a href="#http.others">Use of HTTP by other protocols</a></li>
    634                <li>8.5&nbsp;&nbsp;&nbsp;<a href="#http.media">Use of HTTP by media type specification</a></li>
     629         <li><a href="#rfc.section.8">8.</a>&nbsp;&nbsp;&nbsp;<a href="#misc">Miscellaneous notes that may disappear</a><ul>
     630               <li><a href="#rfc.section.8.1">8.1</a>&nbsp;&nbsp;&nbsp;<a href="#scheme.aliases">Scheme aliases considered harmful</a></li>
     631               <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>
     632               <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>
     633               <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>
     634               <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>
    635635            </ul>
    636636         </li>
    637          <li>9.&nbsp;&nbsp;&nbsp;<a href="#header.field.definitions">Header Field Definitions</a><ul>
    638                <li>9.1&nbsp;&nbsp;&nbsp;<a href="#header.connection">Connection</a></li>
    639                <li>9.2&nbsp;&nbsp;&nbsp;<a href="#header.content-length">Content-Length</a></li>
    640                <li>9.3&nbsp;&nbsp;&nbsp;<a href="#header.date">Date</a><ul>
    641                      <li>9.3.1&nbsp;&nbsp;&nbsp;<a href="#clockless.origin.server.operation">Clockless Origin Server Operation</a></li>
     637         <li><a href="#rfc.section.9">9.</a>&nbsp;&nbsp;&nbsp;<a href="#header.field.definitions">Header Field Definitions</a><ul>
     638               <li><a href="#rfc.section.9.1">9.1</a>&nbsp;&nbsp;&nbsp;<a href="#header.connection">Connection</a></li>
     639               <li><a href="#rfc.section.9.2">9.2</a>&nbsp;&nbsp;&nbsp;<a href="#header.content-length">Content-Length</a></li>
     640               <li><a href="#rfc.section.9.3">9.3</a>&nbsp;&nbsp;&nbsp;<a href="#header.date">Date</a><ul>
     641                     <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>
    642642                  </ul>
    643643               </li>
    644                <li>9.4&nbsp;&nbsp;&nbsp;<a href="#header.host">Host</a></li>
    645                <li>9.5&nbsp;&nbsp;&nbsp;<a href="#header.te">TE</a></li>
    646                <li>9.6&nbsp;&nbsp;&nbsp;<a href="#header.trailer">Trailer</a></li>
    647                <li>9.7&nbsp;&nbsp;&nbsp;<a href="#header.transfer-encoding">Transfer-Encoding</a></li>
    648                <li>9.8&nbsp;&nbsp;&nbsp;<a href="#header.upgrade">Upgrade</a><ul>
    649                      <li>9.8.1&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registry">Upgrade Token Registry</a></li>
     644               <li><a href="#rfc.section.9.4">9.4</a>&nbsp;&nbsp;&nbsp;<a href="#header.host">Host</a></li>
     645               <li><a href="#rfc.section.9.5">9.5</a>&nbsp;&nbsp;&nbsp;<a href="#header.te">TE</a></li>
     646               <li><a href="#rfc.section.9.6">9.6</a>&nbsp;&nbsp;&nbsp;<a href="#header.trailer">Trailer</a></li>
     647               <li><a href="#rfc.section.9.7">9.7</a>&nbsp;&nbsp;&nbsp;<a href="#header.transfer-encoding">Transfer-Encoding</a></li>
     648               <li><a href="#rfc.section.9.8">9.8</a>&nbsp;&nbsp;&nbsp;<a href="#header.upgrade">Upgrade</a><ul>
     649                     <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>
    650650                  </ul>
    651651               </li>
    652                <li>9.9&nbsp;&nbsp;&nbsp;<a href="#header.via">Via</a></li>
     652               <li><a href="#rfc.section.9.9">9.9</a>&nbsp;&nbsp;&nbsp;<a href="#header.via">Via</a></li>
    653653            </ul>
    654654         </li>
    655          <li>10.&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a><ul>
    656                <li>10.1&nbsp;&nbsp;&nbsp;<a href="#message.header.registration">Message Header Registration</a></li>
    657                <li>10.2&nbsp;&nbsp;&nbsp;<a href="#uri.scheme.registration">URI Scheme Registration</a></li>
    658                <li>10.3&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.http">Internet Media Type Registrations</a><ul>
    659                      <li>10.3.1&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.message.http">Internet Media Type message/http</a></li>
    660                      <li>10.3.2&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.application.http">Internet Media Type application/http</a></li>
     655         <li><a href="#rfc.section.10">10.</a>&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a><ul>
     656               <li><a href="#rfc.section.10.1">10.1</a>&nbsp;&nbsp;&nbsp;<a href="#message.header.registration">Message Header Registration</a></li>
     657               <li><a href="#rfc.section.10.2">10.2</a>&nbsp;&nbsp;&nbsp;<a href="#uri.scheme.registration">URI Scheme Registration</a></li>
     658               <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>
     659                     <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>
     660                     <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>
    661661                  </ul>
    662662               </li>
    663                <li>10.4&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registration">Transfer Coding Registry</a></li>
    664                <li>10.5&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registration">Upgrade Token Registration</a></li>
     663               <li><a href="#rfc.section.10.4">10.4</a>&nbsp;&nbsp;&nbsp;<a href="#transfer.coding.registration">Transfer Coding Registry</a></li>
     664               <li><a href="#rfc.section.10.5">10.5</a>&nbsp;&nbsp;&nbsp;<a href="#upgrade.token.registration">Upgrade Token Registration</a></li>
    665665            </ul>
    666666         </li>
    667          <li>11.&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul>
    668                <li>11.1&nbsp;&nbsp;&nbsp;<a href="#personal.information">Personal Information</a></li>
    669                <li>11.2&nbsp;&nbsp;&nbsp;<a href="#abuse.of.server.log.information">Abuse of Server Log Information</a></li>
    670                <li>11.3&nbsp;&nbsp;&nbsp;<a href="#attack.pathname">Attacks Based On File and Path Names</a></li>
    671                <li>11.4&nbsp;&nbsp;&nbsp;<a href="#dns.spoofing">DNS Spoofing</a></li>
    672                <li>11.5&nbsp;&nbsp;&nbsp;<a href="#attack.proxies">Proxies and Caching</a></li>
    673                <li>11.6&nbsp;&nbsp;&nbsp;<a href="#attack.DoS">Denial of Service Attacks on Proxies</a></li>
     667         <li><a href="#rfc.section.11">11.</a>&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul>
     668               <li><a href="#rfc.section.11.1">11.1</a>&nbsp;&nbsp;&nbsp;<a href="#personal.information">Personal Information</a></li>
     669               <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>
     670               <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>
     671               <li><a href="#rfc.section.11.4">11.4</a>&nbsp;&nbsp;&nbsp;<a href="#dns.spoofing">DNS Spoofing</a></li>
     672               <li><a href="#rfc.section.11.5">11.5</a>&nbsp;&nbsp;&nbsp;<a href="#attack.proxies">Proxies and Caching</a></li>
     673               <li><a href="#rfc.section.11.6">11.6</a>&nbsp;&nbsp;&nbsp;<a href="#attack.DoS">Denial of Service Attacks on Proxies</a></li>
    674674            </ul>
    675675         </li>
    676          <li>12.&nbsp;&nbsp;&nbsp;<a href="#ack">Acknowledgments</a></li>
    677          <li>13.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul>
    678                <li>13.1&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
    679                <li>13.2&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
     676         <li><a href="#rfc.section.12">12.</a>&nbsp;&nbsp;&nbsp;<a href="#ack">Acknowledgments</a></li>
     677         <li><a href="#rfc.section.13">13.</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul>
     678               <li><a href="#rfc.section.13.1">13.1</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
     679               <li><a href="#rfc.section.13.2">13.2</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
    680680            </ul>
    681681         </li>
    682          <li><a href="#rfc.authors">Authors' Addresses</a></li>
    683          <li>A.&nbsp;&nbsp;&nbsp;<a href="#tolerant.applications">Tolerant Applications</a></li>
    684          <li>B.&nbsp;&nbsp;&nbsp;<a href="#compatibility">Compatibility with Previous Versions</a><ul>
    685                <li>B.1&nbsp;&nbsp;&nbsp;<a href="#changes.from.1.0">Changes from HTTP/1.0</a><ul>
    686                      <li>B.1.1&nbsp;&nbsp;&nbsp;<a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses">Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses</a></li>
     682         <li><a href="#rfc.section.A">A.</a>&nbsp;&nbsp;&nbsp;<a href="#tolerant.applications">Tolerant Applications</a></li>
     683         <li><a href="#rfc.section.B">B.</a>&nbsp;&nbsp;&nbsp;<a href="#compatibility">Compatibility with Previous Versions</a><ul>
     684               <li><a href="#rfc.section.B.1">B.1</a>&nbsp;&nbsp;&nbsp;<a href="#changes.from.1.0">Changes from HTTP/1.0</a><ul>
     685                     <li><a href="#rfc.section.B.1.1">B.1.1</a>&nbsp;&nbsp;&nbsp;<a href="#changes.to.simplify.multi-homed.web.servers.and.conserve.ip.addresses">Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses</a></li>
    687686                  </ul>
    688687               </li>
    689                <li>B.2&nbsp;&nbsp;&nbsp;<a href="#compatibility.with.http.1.0.persistent.connections">Compatibility with HTTP/1.0 Persistent Connections</a></li>
    690                <li>B.3&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2068">Changes from RFC 2068</a></li>
    691                <li>B.4&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2616">Changes from RFC 2616</a></li>
     688               <li><a href="#rfc.section.B.2">B.2</a>&nbsp;&nbsp;&nbsp;<a href="#compatibility.with.http.1.0.persistent.connections">Compatibility with HTTP/1.0 Persistent Connections</a></li>
     689               <li><a href="#rfc.section.B.3">B.3</a>&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2068">Changes from RFC 2068</a></li>
     690               <li><a href="#rfc.section.B.4">B.4</a>&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2616">Changes from RFC 2616</a></li>
    692691            </ul>
    693692         </li>
    694          <li>C.&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
    695          <li>D.&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
    696                <li>D.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.1">Since RFC2616</a></li>
    697                <li>D.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.2">Since draft-ietf-httpbis-p1-messaging-00</a></li>
    698                <li>D.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.3">Since draft-ietf-httpbis-p1-messaging-01</a></li>
    699                <li>D.4&nbsp;&nbsp;&nbsp;<a href="#changes.since.02">Since draft-ietf-httpbis-p1-messaging-02</a></li>
    700                <li>D.5&nbsp;&nbsp;&nbsp;<a href="#changes.since.03">Since draft-ietf-httpbis-p1-messaging-03</a></li>
    701                <li>D.6&nbsp;&nbsp;&nbsp;<a href="#changes.since.04">Since draft-ietf-httpbis-p1-messaging-04</a></li>
    702                <li>D.7&nbsp;&nbsp;&nbsp;<a href="#changes.since.05">Since draft-ietf-httpbis-p1-messaging-05</a></li>
    703                <li>D.8&nbsp;&nbsp;&nbsp;<a href="#changes.since.06">Since draft-ietf-httpbis-p1-messaging-06</a></li>
    704                <li>D.9&nbsp;&nbsp;&nbsp;<a href="#changes.since.07">Since draft-ietf-httpbis-p1-messaging-07</a></li>
    705                <li>D.10&nbsp;&nbsp;&nbsp;<a href="#changes.since.08">Since draft-ietf-httpbis-p1-messaging-08</a></li>
     693         <li><a href="#rfc.section.C">C.</a>&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
     694         <li><a href="#rfc.section.D">D.</a>&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
     695               <li><a href="#rfc.section.D.1">D.1</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.1">Since RFC2616</a></li>
     696               <li><a href="#rfc.section.D.2">D.2</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.2">Since draft-ietf-httpbis-p1-messaging-00</a></li>
     697               <li><a href="#rfc.section.D.3">D.3</a>&nbsp;&nbsp;&nbsp;<a href="#rfc.section.D.3">Since draft-ietf-httpbis-p1-messaging-01</a></li>
     698               <li><a href="#rfc.section.D.4">D.4</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.02">Since draft-ietf-httpbis-p1-messaging-02</a></li>
     699               <li><a href="#rfc.section.D.5">D.5</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.03">Since draft-ietf-httpbis-p1-messaging-03</a></li>
     700               <li><a href="#rfc.section.D.6">D.6</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.04">Since draft-ietf-httpbis-p1-messaging-04</a></li>
     701               <li><a href="#rfc.section.D.7">D.7</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.05">Since draft-ietf-httpbis-p1-messaging-05</a></li>
     702               <li><a href="#rfc.section.D.8">D.8</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.06">Since draft-ietf-httpbis-p1-messaging-06</a></li>
     703               <li><a href="#rfc.section.D.9">D.9</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.07">Since draft-ietf-httpbis-p1-messaging-07</a></li>
     704               <li><a href="#rfc.section.D.10">D.10</a>&nbsp;&nbsp;&nbsp;<a href="#changes.since.08">Since draft-ietf-httpbis-p1-messaging-08</a></li>
    706705            </ul>
    707706         </li>
    708707         <li><a href="#rfc.index">Index</a></li>
     708         <li><a href="#rfc.authors">Authors' Addresses</a></li>
    709709      </ul>
    710       <h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;<a id="introduction" href="#introduction">Introduction</a></h1>
    711       <p id="rfc.section.1.p.1">The Hypertext Transfer Protocol (HTTP) is an application-level request/response protocol that uses extensible semantics and
    712          MIME-like message payloads for flexible interaction with network-based hypertext information systems. HTTP relies upon the
    713          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 request targets and relationships between resources. Messages are passed in a format similar to that used by Internet
    714          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.entities.and.rfc.2045.entities" title="Differences Between HTTP Entities and RFC 2045 Entities">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).
    715       </p>
    716       <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
    717          by presenting a uniform interface to clients that is independent of the types of resources provided. Likewise, servers do
    718          not need to be aware of each client's purpose: an HTTP request can be considered in isolation rather than being associated
    719          with a specific type of client or a predetermined sequence of application steps. The result is a protocol that can be used
    720          effectively in many different contexts and for which implementations can evolve independently over time.
    721       </p>
    722       <p id="rfc.section.1.p.3">HTTP is also designed for use as a generic protocol for translating communication to and from other Internet information systems.
    723          HTTP proxies and gateways provide access to alternative information services by translating their diverse protocols into a
    724          hypertext format that can be viewed and manipulated by clients in the same way as HTTP services.
    725       </p>
    726       <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,
    727          we are limited to defining the syntax of communication, the intent of received communication, and the expected behavior of
    728          recipients. If the communication is considered in isolation, then successful actions should be reflected in corresponding
    729          changes to the observable interface provided by servers. However, since multiple clients may act in parallel and perhaps at
    730          cross-purposes, we cannot require that such changes be observable beyond the scope of a single response.
    731       </p>
    732       <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" and obsoleting <a href="#RFC2616" id="rfc.xref.RFC2616.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>. Part 1 describes the architectural elements that are used or referred to in HTTP, defines the "http" and "https" URI schemes,
    733          describes overall network operation and connection management, and defines HTTP message framing and forwarding requirements.
    734          Our goal is to define all of the mechanisms necessary for HTTP message handling that are independent of message semantics,
    735          thereby defining the complete set of requirements for message parsers and message-forwarding intermediaries.
    736       </p>
    737       <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>
    738       <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"
    739          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>.
    740       </p>
    741       <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level requirements for the protocols it implements. An implementation that satisfies all the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level and all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "unconditionally compliant"; one that satisfies all the <em class="bcp14">MUST</em> level requirements but not all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "conditionally compliant."
    742       </p>
    743       <div id="rfc.iref.g.1"></div>
    744       <div id="rfc.iref.g.2"></div>
    745       <div id="rfc.iref.g.3"></div>
    746       <div id="rfc.iref.g.4"></div>
    747       <div id="rfc.iref.g.5"></div>
    748       <div id="rfc.iref.g.6"></div>
    749       <div id="rfc.iref.g.7"></div>
    750       <div id="rfc.iref.g.8"></div>
    751       <div id="rfc.iref.g.9"></div>
    752       <div id="rfc.iref.g.10"></div>
    753       <div id="rfc.iref.g.11"></div>
    754       <div id="rfc.iref.g.12"></div>
    755       <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>
    756       <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>.
    757       </p>
    758       <div id="core.rules">
    759          <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
    760             (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).
     710      <div id="introduction">
     711         <h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;<a href="#introduction">Introduction</a></h1>
     712         <p id="rfc.section.1.p.1">The Hypertext Transfer Protocol (HTTP) is an application-level request/response protocol that uses extensible semantics and
     713            MIME-like message payloads for flexible interaction with network-based hypertext information systems. HTTP relies upon the
     714            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 request targets and relationships between resources. Messages are passed in a format similar to that used by Internet
     715            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.entities.and.rfc.2045.entities" title="Differences Between HTTP Entities and RFC 2045 Entities">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).
    761716         </p>
    762       </div>
    763       <p id="rfc.section.1.2.p.3">As a syntactical convention, ABNF rule names prefixed with "obs-" denote "obsolete" grammar rules that appear for historical
    764          reasons.
    765       </p>
    766       <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>
    767       <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.
    768       </p>
    769       <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"
    770          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>).
    771       </p>
    772       <div id="rfc.figure.u.1"></div>
    773       <p>Thus,</p><pre class="text">  1#element =&gt; element *( OWS "," OWS element )
     717         <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
     718            by presenting a uniform interface to clients that is independent of the types of resources provided. Likewise, servers do
     719            not need to be aware of each client's purpose: an HTTP request can be considered in isolation rather than being associated
     720            with a specific type of client or a predetermined sequence of application steps. The result is a protocol that can be used
     721            effectively in many different contexts and for which implementations can evolve independently over time.
     722         </p>
     723         <p id="rfc.section.1.p.3">HTTP is also designed for use as a generic protocol for translating communication to and from other Internet information systems.
     724            HTTP proxies and gateways provide access to alternative information services by translating their diverse protocols into a
     725            hypertext format that can be viewed and manipulated by clients in the same way as HTTP services.
     726         </p>
     727         <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,
     728            we are limited to defining the syntax of communication, the intent of received communication, and the expected behavior of
     729            recipients. If the communication is considered in isolation, then successful actions should be reflected in corresponding
     730            changes to the observable interface provided by servers. However, since multiple clients may act in parallel and perhaps at
     731            cross-purposes, we cannot require that such changes be observable beyond the scope of a single response.
     732         </p>
     733         <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" and obsoleting <a href="#RFC2616" id="rfc.xref.RFC2616.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>. Part 1 describes the architectural elements that are used or referred to in HTTP, defines the "http" and "https" URI schemes,
     734            describes overall network operation and connection management, and defines HTTP message framing and forwarding requirements.
     735            Our goal is to define all of the mechanisms necessary for HTTP message handling that are independent of message semantics,
     736            thereby defining the complete set of requirements for message parsers and message-forwarding intermediaries.
     737         </p>
     738         <div id="intro.requirements">
     739            <h2 id="rfc.section.1.1"><a href="#rfc.section.1.1">1.1</a>&nbsp;<a href="#intro.requirements">Requirements</a></h2>
     740            <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"
     741               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>.
     742            </p>
     743            <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level requirements for the protocols it implements. An implementation that satisfies all the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level and all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "unconditionally compliant"; one that satisfies all the <em class="bcp14">MUST</em> level requirements but not all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "conditionally compliant."
     744            </p>
     745         </div>
     746         <div id="notation">
     747            <div id="rfc.iref.g.1"></div>
     748            <div id="rfc.iref.g.2"></div>
     749            <div id="rfc.iref.g.3"></div>
     750            <div id="rfc.iref.g.4"></div>
     751            <div id="rfc.iref.g.5"></div>
     752            <div id="rfc.iref.g.6"></div>
     753            <div id="rfc.iref.g.7"></div>
     754            <div id="rfc.iref.g.8"></div>
     755            <div id="rfc.iref.g.9"></div>
     756            <div id="rfc.iref.g.10"></div>
     757            <div id="rfc.iref.g.11"></div>
     758            <div id="rfc.iref.g.12"></div>
     759            <h2 id="rfc.section.1.2"><a href="#rfc.section.1.2">1.2</a>&nbsp;<a href="#notation">Syntax Notation</a></h2>
     760            <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>.
     761            </p>
     762            <div id="core.rules">
     763               <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
     764                  (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).
     765               </p>
     766            </div>
     767            <p id="rfc.section.1.2.p.3">As a syntactical convention, ABNF rule names prefixed with "obs-" denote "obsolete" grammar rules that appear for historical
     768               reasons.
     769            </p>
     770            <div id="notation.abnf">
     771               <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>
     772               <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.
     773               </p>
     774               <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"
     775                  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>).
     776               </p>
     777               <div id="rfc.figure.u.1"></div>
     778               <p>Thus,</p><pre class="text">  1#element =&gt; element *( OWS "," OWS element )
    774779</pre><div id="rfc.figure.u.2"></div>
    775       <p>and:</p><pre class="text">  #element =&gt; [ 1#element ]
     780               <p>and:</p><pre class="text">  #element =&gt; [ 1#element ]
    776781</pre><div id="rfc.figure.u.3"></div>
    777       <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 )
     782               <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 )
    778783</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:
    779       </p>
    780       <div id="rfc.figure.u.4"></div><pre class="text">  #element =&gt; [ ( "," / element ) *( OWS "," [ OWS element ] ) ]
     784               </p>
     785               <div id="rfc.figure.u.4"></div><pre class="text">  #element =&gt; [ ( "," / element ) *( OWS "," [ OWS element ] ) ]
    781786 
    782787  1#element =&gt; *( "," OWS ) element *( OWS "," [ OWS element ] )
    783788</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>
    784       <p id="rfc.section.1.2.1.p.9">For example, given these ABNF productions:</p>
    785       <div id="rfc.figure.u.5"></div><pre class="text">  example-list      = 1#example-list-elmt
     789               <p id="rfc.section.1.2.1.p.9">For example, given these ABNF productions:</p>
     790               <div id="rfc.figure.u.5"></div><pre class="text">  example-list      = 1#example-list-elmt
    786791  example-list-elmt = token ; see <a href="#basic.rules" title="Basic Rules">Section&nbsp;1.2.2</a>
    787792</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>
    788       <div id="rfc.figure.u.6"></div><pre class="text">  "foo,bar"
     793               <div id="rfc.figure.u.6"></div><pre class="text">  "foo,bar"
    789794  " foo ,bar,"
    790795  "  foo , ,bar,charlie   "
    791796  "foo ,bar,   charlie "
    792797</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>
    793       <div id="rfc.figure.u.7"></div><pre class="text">  ""
     798               <div id="rfc.figure.u.7"></div><pre class="text">  ""
    794799  ","
    795800  ",   ,"
    796 </pre><p id="rfc.section.1.2.1.p.15"> <a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;C</a> shows the collected ABNF, with the list rules expanded as explained above.
    797       </p>
    798       <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>
    799       <div id="rule.CRLF">
    800          <p id="rfc.section.1.2.2.p.1">  HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body (see <a href="#tolerant.applications" title="Tolerant Applications">Appendix&nbsp;A</a> for tolerant applications). The end-of-line marker within an entity-body is defined by its associated media type, as described
    801             in <a href="p3-payload.html#media.types" title="Media Types">Section 2.3</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>.
    802          </p>
    803       </div>
    804       <div id="rule.LWS">
    805          <p id="rfc.section.1.2.2.p.2">This specification uses three rules to denote the use of linear whitespace: OWS (optional whitespace), RWS (required whitespace),
    806             and BWS ("bad" whitespace).
    807          </p>
    808       </div>
    809       <p id="rfc.section.1.2.2.p.3">The OWS rule is used where zero or more linear whitespace characters may appear. OWS <em class="bcp14">SHOULD</em> either not be produced or be produced as a single SP character. Multiple OWS characters that occur within field-content <em class="bcp14">SHOULD</em> be replaced with a single SP before interpreting the field value or forwarding the message downstream.
    810       </p>
    811       <p id="rfc.section.1.2.2.p.4">RWS is used when at least one linear whitespace character is required to separate field tokens. RWS <em class="bcp14">SHOULD</em> be produced as a single SP character. Multiple RWS characters that occur within field-content <em class="bcp14">SHOULD</em> be replaced with a single SP before interpreting the field value or forwarding the message downstream.
    812       </p>
    813       <p id="rfc.section.1.2.2.p.5">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.
    814       </p>
    815       <div id="rule.whitespace">
    816          <p id="rfc.section.1.2.2.p.6">        </p>
    817       </div>
    818       <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> )
     801</pre><p id="rfc.section.1.2.1.p.15"><a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;C</a> shows the collected ABNF, with the list rules expanded as explained above.
     802               </p>
     803            </div>
     804            <div id="basic.rules">
     805               <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>
     806               <div id="rule.CRLF">
     807                  <p id="rfc.section.1.2.2.p.1"> HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body (see <a href="#tolerant.applications" title="Tolerant Applications">Appendix&nbsp;A</a> for tolerant applications). The end-of-line marker within an entity-body is defined by its associated media type, as described
     808                     in <a href="p3-payload.html#media.types" title="Media Types">Section 2.3</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>.
     809                  </p>
     810               </div>
     811               <div id="rule.LWS">
     812                  <p id="rfc.section.1.2.2.p.2">This specification uses three rules to denote the use of linear whitespace: OWS (optional whitespace), RWS (required whitespace),
     813                     and BWS ("bad" whitespace).
     814                  </p>
     815               </div>
     816               <p id="rfc.section.1.2.2.p.3">The OWS rule is used where zero or more linear whitespace characters may appear. OWS <em class="bcp14">SHOULD</em> either not be produced or be produced as a single SP character. Multiple OWS characters that occur within field-content <em class="bcp14">SHOULD</em> be replaced with a single SP before interpreting the field value or forwarding the message downstream.
     817               </p>
     818               <p id="rfc.section.1.2.2.p.4">RWS is used when at least one linear whitespace character is required to separate field tokens. RWS <em class="bcp14">SHOULD</em> be produced as a single SP character. Multiple RWS characters that occur within field-content <em class="bcp14">SHOULD</em> be replaced with a single SP before interpreting the field value or forwarding the message downstream.
     819               </p>
     820               <p id="rfc.section.1.2.2.p.5">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.
     821               </p>
     822               <div id="rule.whitespace">
     823                  <p id="rfc.section.1.2.2.p.6">    </p>
     824               </div>
     825               <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> )
    819826                 ; "optional" whitespace
    820827  <a href="#rule.whitespace" class="smpl">RWS</a>            = 1*( [ obs-fold ] <a href="#core.rules" class="smpl">WSP</a> )
     
    825832                 ; see <a href="#header.fields" title="Header Fields">Section&nbsp;3.2</a>
    826833</pre><div id="rule.token.separators">
    827          <p id="rfc.section.1.2.2.p.8">      Many HTTP/1.1 header field values consist of words (token or quoted-string) separated by whitespace or special characters.
    828             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>).
    829          </p>
    830       </div>
    831       <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#rule.token.separators" class="smpl">token</a>          = 1*<a href="#rule.token.separators" class="smpl">tchar</a>
     834                  <p id="rfc.section.1.2.2.p.8">   Many HTTP/1.1 header field values consist of words (token or quoted-string) separated by whitespace or special characters.
     835                     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>).
     836                  </p>
     837               </div>
     838               <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#rule.token.separators" class="smpl">token</a>          = 1*<a href="#rule.token.separators" class="smpl">tchar</a>
    832839
    833840  <a href="#rule.token.separators" class="smpl">tchar</a>          = "!" / "#" / "$" / "%" / "&amp;" / "'" / "*"
     
    840847                 / "]" / "?" / "=" / "{" / "}"
    841848</pre><div id="rule.quoted-string">
    842          <p id="rfc.section.1.2.2.p.10">      A string of text is parsed as a single word if it is quoted using double-quote marks.</p>
    843       </div>
    844       <div id="rfc.figure.u.10"></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>  <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>
     849                  <p id="rfc.section.1.2.2.p.10">   A string of text is parsed as a single word if it is quoted using double-quote marks.</p>
     850               </div>
     851               <div id="rfc.figure.u.10"></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>  <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>
    845852  <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>
    846853                 ; <a href="#rule.whitespace" class="smpl">OWS</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>
    847854  <a href="#rule.quoted-string" class="smpl">obs-text</a>       = %x80-FF
    848855</pre><div id="rule.quoted-pair">
    849          <p id="rfc.section.1.2.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within quoted-string constructs:</p>
    850       </div>
    851       <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.22"></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> )
     856                  <p id="rfc.section.1.2.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within quoted-string constructs:</p>
     857               </div>
     858               <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.22"></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> )
    852859</pre><p id="rfc.section.1.2.2.p.14">Producers <em class="bcp14">SHOULD NOT</em> escape characters that do not require escaping (i.e., other than DQUOTE and the backslash character).
    853       </p>
    854       <h3 id="rfc.section.1.2.3"><a href="#rfc.section.1.2.3">1.2.3</a>&nbsp;<a id="abnf.dependencies" href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></h3>
    855       <p id="rfc.section.1.2.3.p.1">The ABNF rules below are defined in other parts:</p>
    856       <div id="rfc.figure.u.12"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">request-header</a>  = &lt;request-header, defined in <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a>&gt;
     860               </p>
     861            </div>
     862            <div id="abnf.dependencies">
     863               <h3 id="rfc.section.1.2.3"><a href="#rfc.section.1.2.3">1.2.3</a>&nbsp;<a href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></h3>
     864               <p id="rfc.section.1.2.3.p.1">The ABNF rules below are defined in other parts:</p>
     865               <div id="rfc.figure.u.12"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">request-header</a>  = &lt;request-header, defined in <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a>&gt;
    857866  <a href="#abnf.dependencies" class="smpl">response-header</a> = &lt;response-header, defined in <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#response.header.fields" title="Response Header Fields">Section 5</a>&gt;
    858867</pre><div id="rfc.figure.u.13"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">entity-body</a>     = &lt;entity-body, defined in <a href="#Part3" id="rfc.xref.Part3.3"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>, <a href="p3-payload.html#entity.body" title="Entity Body">Section 3.2</a>&gt;
     
    861870  <a href="#abnf.dependencies" class="smpl">Pragma</a>          = &lt;Pragma, defined in <a href="#Part6" id="rfc.xref.Part6.2"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.pragma" title="Pragma">Section 3.4</a>&gt;
    862871  <a href="#abnf.dependencies" class="smpl">Warning</a>         = &lt;Warning, defined in <a href="#Part6" id="rfc.xref.Part6.3"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a>&gt;
    863 </pre><h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="architecture" href="#architecture">HTTP architecture</a></h1>
    864       <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
    865          hypertext system. Much of that architecture is reflected in the terminology and syntax productions used to define HTTP.
    866       </p>
    867       <div id="rfc.iref.c.1"></div>
    868       <div id="rfc.iref.s.1"></div>
    869       <div id="rfc.iref.c.2"></div>
    870       <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;<a id="operation" href="#operation">Client/Server Operation</a></h2>
    871       <p id="rfc.section.2.1.p.1">HTTP is a request/response protocol that operates by exchanging messages across a reliable transport or session-layer connection.
    872          An HTTP client is a program that establishes a connection to a server for the purpose of sending one or more HTTP requests.
    873          An HTTP server is a program that accepts connections in order to service HTTP requests by sending HTTP responses.
    874       </p>
    875       <div id="rfc.iref.u.1"></div>
    876       <div id="rfc.iref.o.1"></div>
    877       <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.
    878          The same program may act as a client on some connections and a server on others. We use the term "user agent" to refer to
    879          the program that initiates a request, such as a WWW browser, editor, or spider (web-traversing robot), and the term "origin
    880          server" to refer to the program that can originate authoritative responses to a request.
    881       </p>
    882       <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
    883          the simplest case, this may be accomplished via a single connection (v) between the user agent (UA) and the origin server
    884          (O).
    885       </p>
    886       <div id="rfc.figure.u.15"></div><pre class="drawing">       request chain ------------------------&gt;
     872</pre></div>
     873         </div>
     874      </div>
     875      <div id="architecture">
     876         <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a href="#architecture">HTTP architecture</a></h1>
     877         <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
     878            hypertext system. Much of that architecture is reflected in the terminology and syntax productions used to define HTTP.
     879         </p>
     880         <div id="operation">
     881            <div id="rfc.iref.c.1"></div>
     882            <div id="rfc.iref.s.1"></div>
     883            <div id="rfc.iref.c.2"></div>
     884            <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;<a href="#operation">Client/Server Operation</a></h2>
     885            <p id="rfc.section.2.1.p.1">HTTP is a request/response protocol that operates by exchanging messages across a reliable transport or session-layer connection.
     886               An HTTP client is a program that establishes a connection to a server for the purpose of sending one or more HTTP requests.
     887               An HTTP server is a program that accepts connections in order to service HTTP requests by sending HTTP responses.
     888            </p>
     889            <div id="rfc.iref.u.1"></div>
     890            <div id="rfc.iref.o.1"></div>
     891            <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.
     892               The same program may act as a client on some connections and a server on others. We use the term "user agent" to refer to
     893               the program that initiates a request, such as a WWW browser, editor, or spider (web-traversing robot), and the term "origin
     894               server" to refer to the program that can originate authoritative responses to a request.
     895            </p>
     896            <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
     897               the simplest case, this may be accomplished via a single connection (v) between the user agent (UA) and the origin server
     898               (O).
     899            </p>
     900            <div id="rfc.figure.u.15"></div><pre class="drawing">       request chain ------------------------&gt;
    887901    UA -------------------v------------------- O
    888902       &lt;----------------------- response chain
    889903</pre><div id="rfc.iref.m.1"></div>
    890       <div id="rfc.iref.r.1"></div>
    891       <div id="rfc.iref.r.2"></div>
    892       <p id="rfc.section.2.1.p.5">A client sends an HTTP request to the server in the form of a request message (<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
    893          information, and payload metadata, an empty line to indicate the end of the header section, and finally the payload body (if
    894          any).
    895       </p>
    896       <p id="rfc.section.2.1.p.6">A server responds to the client's request by sending an HTTP response message (<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
    897          by MIME-like header fields containing server information, resource metadata, and payload metadata, an empty line to indicate
    898          the end of the header section, and finally the payload body (if any).
    899       </p>
    900       <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>
    901       <div id="rfc.figure.u.16"></div>
    902       <p>client request:</p><pre class="text2">GET /hello.txt HTTP/1.1
     904            <div id="rfc.iref.r.1"></div>
     905            <div id="rfc.iref.r.2"></div>
     906            <p id="rfc.section.2.1.p.5">A client sends an HTTP request to the server in the form of a request message (<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
     907               information, and payload metadata, an empty line to indicate the end of the header section, and finally the payload body (if
     908               any).
     909            </p>
     910            <p id="rfc.section.2.1.p.6">A server responds to the client's request by sending an HTTP response message (<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
     911               by MIME-like header fields containing server information, resource metadata, and payload metadata, an empty line to indicate
     912               the end of the header section, and finally the payload body (if any).
     913            </p>
     914            <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>
     915            <div id="rfc.figure.u.16"></div>
     916            <p>client request:</p><pre class="text2">GET /hello.txt HTTP/1.1
    903917User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    904918Host: www.example.com
     
    906920
    907921</pre><div id="rfc.figure.u.17"></div>
    908       <p>server response:</p><pre class="text">HTTP/1.1 200 OK
     922            <p>server response:</p><pre class="text">HTTP/1.1 200 OK
    909923Date: Mon, 27 Jul 2009 12:28:53 GMT
    910924Server: Apache
     
    917931
    918932<span id="exbody">Hello World!
    919 </span></pre><h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;<a id="intermediaries" href="#intermediaries">Intermediaries</a></h2>
    920       <p id="rfc.section.2.2.p.1">A more complicated situation occurs when one or more intermediaries are present in the request/response chain. There are three
    921          common forms of intermediary: proxy, gateway, and tunnel. In some cases, a single intermediary may act as an origin server,
    922          proxy, gateway, or tunnel, switching behavior based on the nature of each request.
    923       </p>
    924       <div id="rfc.figure.u.18"></div><pre class="drawing">       request chain --------------------------------------&gt;
     933</span></pre></div>
     934         <div id="intermediaries">
     935            <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;<a href="#intermediaries">Intermediaries</a></h2>
     936            <p id="rfc.section.2.2.p.1">A more complicated situation occurs when one or more intermediaries are present in the request/response chain. There are three
     937               common forms of intermediary: proxy, gateway, and tunnel. In some cases, a single intermediary may act as an origin server,
     938               proxy, gateway, or tunnel, switching behavior based on the nature of each request.
     939            </p>
     940            <div id="rfc.figure.u.18"></div><pre class="drawing">       request chain --------------------------------------&gt;
    925941    UA -----v----- A -----v----- B -----v----- C -----v----- O
    926942       &lt;------------------------------------- response chain
    927943</pre><p id="rfc.section.2.2.p.3">The figure above shows three intermediaries (A, B, and C) between the user agent and origin server. A request or response
    928          message that travels the whole chain will pass through four separate connections. Some HTTP communication options may apply
    929          only to the connection with the nearest, non-tunnel neighbor, only to the end-points of the chain, or to all connections along
    930          the chain. Although the diagram is linear, each participant may be engaged in multiple, simultaneous communications. For example,
    931          B may be receiving requests from many clients other than A, and/or forwarding requests to servers other than C, at the same
    932          time that it is handling A's request.
    933       </p>
    934       <p id="rfc.section.2.2.p.4"> <span id="rfc.iref.u.2"></span><span id="rfc.iref.d.1"></span>  <span id="rfc.iref.i.1"></span><span id="rfc.iref.o.2"></span> We use the terms "upstream" and "downstream" to describe various requirements in relation to the directional flow of a message:
    935          all messages flow from upstream to downstream. Likewise, we use the terms "inbound" and "outbound" to refer to directions
    936          in relation to the request path: "inbound" means toward the origin server and "outbound" means toward the user agent.
    937       </p>
    938       <p id="rfc.section.2.2.p.5"><span id="rfc.iref.p.1"></span> A proxy is a message forwarding agent that is selected by the client, usually via local configuration rules, to receive requests
    939          for some type(s) of absolute URI and attempt to satisfy those requests via translation through the HTTP interface. Some translations
    940          are minimal, such as for proxy requests for "http" URIs, whereas other requests may require translation to and from entirely
    941          different application-layer protocols. Proxies are often used to group an organization's HTTP requests through a common intermediary
    942          for the sake of security, annotation services, or shared caching.
    943       </p>
    944       <p id="rfc.section.2.2.p.6"><span id="rfc.iref.g.23"></span><span id="rfc.iref.r.3"></span> A gateway (a.k.a., reverse proxy) is a receiving agent that acts as a layer above some other server(s) and translates the
    945          received requests to the underlying server's protocol. Gateways are often used for load balancing or partitioning HTTP services
    946          across multiple machines. Unlike a proxy, a gateway receives requests as if it were the origin server for the requested resource;
    947          the requesting client will not be aware that it is communicating with a gateway. A gateway communicates with the client as
    948          if the gateway is the origin server and thus is subject to all of the requirements on origin servers for that connection.
    949          A gateway communicates with inbound servers using any protocol it desires, including private extensions to HTTP that are outside
    950          the scope of this specification.
    951       </p>
    952       <p id="rfc.section.2.2.p.7"><span id="rfc.iref.t.1"></span> A tunnel acts as a blind relay between two connections without changing the messages. Once active, a tunnel is not considered
    953          a party to the HTTP communication, though the tunnel may have been initiated by an HTTP request. A tunnel ceases to exist
    954          when both ends of the relayed connection are closed. Tunnels are used to extend a virtual connection through an intermediary,
    955          such as when transport-layer security is used to establish private communication through a shared firewall proxy.
    956       </p>
    957       <div id="rfc.iref.c.3"></div>
    958       <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;<a id="caches" href="#caches">Caches</a></h2>
    959       <p id="rfc.section.2.3.p.1">Any party to HTTP communication that is not acting as a tunnel may employ an internal cache for handling requests. A cache
    960          is a local store of previous response messages and the subsystem that controls its message storage, retrieval, and deletion.
    961          A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent
    962          requests. Any client or server may include a cache, though a cache cannot be used by a server while it is acting as a tunnel.
    963       </p>
    964       <p id="rfc.section.2.3.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
    965          response applicable to that request. The following illustrates the resulting chain if B has a cached copy of an earlier response
    966          from O (via C) for a request which has not been cached by UA or A.
    967       </p>
    968       <div id="rfc.figure.u.19"></div><pre class="drawing">          request chain ----------&gt;
     944               message that travels the whole chain will pass through four separate connections. Some HTTP communication options may apply
     945               only to the connection with the nearest, non-tunnel neighbor, only to the end-points of the chain, or to all connections along
     946               the chain. Although the diagram is linear, each participant may be engaged in multiple, simultaneous communications. For example,
     947               B may be receiving requests from many clients other than A, and/or forwarding requests to servers other than C, at the same
     948               time that it is handling A's request.
     949            </p>
     950            <p id="rfc.section.2.2.p.4"><span id="rfc.iref.u.2"></span><span id="rfc.iref.d.1"></span> <span id="rfc.iref.i.1"></span><span id="rfc.iref.o.2"></span> We use the terms "upstream" and "downstream" to describe various requirements in relation to the directional flow of a message:
     951               all messages flow from upstream to downstream. Likewise, we use the terms "inbound" and "outbound" to refer to directions
     952               in relation to the request path: "inbound" means toward the origin server and "outbound" means toward the user agent.
     953            </p>
     954            <p id="rfc.section.2.2.p.5"><span id="rfc.iref.p.1"></span> A proxy is a message forwarding agent that is selected by the client, usually via local configuration rules, to receive requests
     955               for some type(s) of absolute URI and attempt to satisfy those requests via translation through the HTTP interface. Some translations
     956               are minimal, such as for proxy requests for "http" URIs, whereas other requests may require translation to and from entirely
     957               different application-layer protocols. Proxies are often used to group an organization's HTTP requests through a common intermediary
     958               for the sake of security, annotation services, or shared caching.
     959            </p>
     960            <p id="rfc.section.2.2.p.6"><span id="rfc.iref.g.23"></span><span id="rfc.iref.r.3"></span> A gateway (a.k.a., reverse proxy) is a receiving agent that acts as a layer above some other server(s) and translates the
     961               received requests to the underlying server's protocol. Gateways are often used for load balancing or partitioning HTTP services
     962               across multiple machines. Unlike a proxy, a gateway receives requests as if it were the origin server for the requested resource;
     963               the requesting client will not be aware that it is communicating with a gateway. A gateway communicates with the client as
     964               if the gateway is the origin server and thus is subject to all of the requirements on origin servers for that connection.
     965               A gateway communicates with inbound servers using any protocol it desires, including private extensions to HTTP that are outside
     966               the scope of this specification.
     967            </p>
     968            <p id="rfc.section.2.2.p.7"><span id="rfc.iref.t.1"></span> A tunnel acts as a blind relay between two connections without changing the messages. Once active, a tunnel is not considered
     969               a party to the HTTP communication, though the tunnel may have been initiated by an HTTP request. A tunnel ceases to exist
     970               when both ends of the relayed connection are closed. Tunnels are used to extend a virtual connection through an intermediary,
     971               such as when transport-layer security is used to establish private communication through a shared firewall proxy.
     972            </p>
     973         </div>
     974         <div id="caches">
     975            <div id="rfc.iref.c.3"></div>
     976            <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;<a href="#caches">Caches</a></h2>
     977            <p id="rfc.section.2.3.p.1">Any party to HTTP communication that is not acting as a tunnel may employ an internal cache for handling requests. A cache
     978               is a local store of previous response messages and the subsystem that controls its message storage, retrieval, and deletion.
     979               A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent
     980               requests. Any client or server may include a cache, though a cache cannot be used by a server while it is acting as a tunnel.
     981            </p>
     982            <p id="rfc.section.2.3.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
     983               response applicable to that request. The following illustrates the resulting chain if B has a cached copy of an earlier response
     984               from O (via C) for a request which has not been cached by UA or A.
     985            </p>
     986            <div id="rfc.figure.u.19"></div><pre class="drawing">          request chain ----------&gt;
    969987       UA -----v----- A -----v----- B - - - - - - C - - - - - - O
    970988          &lt;--------- response chain
    971989</pre><p id="rfc.section.2.3.p.4"><span id="rfc.iref.c.4"></span> A response is cacheable if a cache is allowed to store a copy of the response message for use in answering subsequent requests.
    972          Even when a response is cacheable, there may be additional constraints placed by the client or by the origin server on when
    973          that cached response can be used for a particular request. HTTP requirements for cache behavior and cacheable responses are
    974          defined in <a href="p6-cache.html#caching.overview" title="Cache Operation">Section 2</a> of <a href="#Part6" id="rfc.xref.Part6.4"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
    975       </p>
    976       <p id="rfc.section.2.3.p.5">There are a wide variety of architectures and configurations of caches and proxies deployed across the World Wide Web and
    977          inside large organizations. These systems include national hierarchies of proxy caches to save transoceanic bandwidth, systems
    978          that broadcast or multicast cache entries, organizations that distribute subsets of cached data via optical media, and so
    979          on.
    980       </p>
    981       <h2 id="rfc.section.2.4"><a href="#rfc.section.2.4">2.4</a>&nbsp;<a id="transport-independence" href="#transport-independence">Transport Independence</a></h2>
    982       <p id="rfc.section.2.4.p.1">HTTP systems are used in a wide variety of environments, from corporate intranets with high-bandwidth links to long-distance
    983          communication over low-power radio links and intermittent connectivity.
    984       </p>
    985       <p id="rfc.section.2.4.p.2">HTTP communication usually takes place over TCP/IP connections. The default port is TCP 80 (&lt;<a href="http://www.iana.org/assignments/port-numbers">http://www.iana.org/assignments/port-numbers</a>&gt;), but other ports can be used. This does not preclude HTTP from being implemented on top of any other protocol on the Internet,
    986          or on other networks. HTTP only presumes a reliable transport; any protocol that provides such guarantees can be used; the
    987          mapping of the HTTP/1.1 request and response structures onto the transport data units of the protocol in question is outside
    988          the scope of this specification.
    989       </p>
    990       <p id="rfc.section.2.4.p.3">In HTTP/1.0, most implementations used a new connection for each request/response exchange. In HTTP/1.1, a connection may
    991          be used for one or more request/response exchanges, although connections may be closed for a variety of reasons (see <a href="#persistent.connections" title="Persistent Connections">Section&nbsp;7.1</a>).
    992       </p>
    993       <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;<a id="http.version" href="#http.version">HTTP Version</a></h2>
    994       <p id="rfc.section.2.5.p.1">HTTP uses a "&lt;major&gt;.&lt;minor&gt;" numbering scheme to indicate versions of the protocol. The protocol versioning policy is intended
    995          to allow the sender to indicate the format of a message and its capacity for understanding further HTTP communication, rather
    996          than the features obtained via that communication. No change is made to the version number for the addition of message components
    997          which do not affect communication behavior or which only add to extensible field values. The &lt;minor&gt; number is incremented
    998          when the changes made to the protocol add features which do not change the general message parsing algorithm, but which may
    999          add to the message semantics and imply additional capabilities of the sender. The &lt;major&gt; number is incremented when the format
    1000          of a message within the protocol is changed. See <a href="#RFC2145" id="rfc.xref.RFC2145.1"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a> for a fuller explanation.
    1001       </p>
    1002       <p id="rfc.section.2.5.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>
    1003       <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.24"></span><span id="rfc.iref.g.25"></span>  <a href="#http.version" class="smpl">HTTP-Version</a>   = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" 1*<a href="#core.rules" class="smpl">DIGIT</a> "." 1*<a href="#core.rules" class="smpl">DIGIT</a>
     990               Even when a response is cacheable, there may be additional constraints placed by the client or by the origin server on when
     991               that cached response can be used for a particular request. HTTP requirements for cache behavior and cacheable responses are
     992               defined in <a href="p6-cache.html#caching.overview" title="Cache Operation">Section 2</a> of <a href="#Part6" id="rfc.xref.Part6.4"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>.
     993            </p>
     994            <p id="rfc.section.2.3.p.5">There are a wide variety of architectures and configurations of caches and proxies deployed across the World Wide Web and
     995               inside large organizations. These systems include national hierarchies of proxy caches to save transoceanic bandwidth, systems
     996               that broadcast or multicast cache entries, organizations that distribute subsets of cached data via optical media, and so
     997               on.
     998            </p>
     999         </div>
     1000         <div id="transport-independence">
     1001            <h2 id="rfc.section.2.4"><a href="#rfc.section.2.4">2.4</a>&nbsp;<a href="#transport-independence">Transport Independence</a></h2>
     1002            <p id="rfc.section.2.4.p.1">HTTP systems are used in a wide variety of environments, from corporate intranets with high-bandwidth links to long-distance
     1003               communication over low-power radio links and intermittent connectivity.
     1004            </p>
     1005            <p id="rfc.section.2.4.p.2">HTTP communication usually takes place over TCP/IP connections. The default port is TCP 80 (&lt;<a href="http://www.iana.org/assignments/port-numbers">http://www.iana.org/assignments/port-numbers</a>&gt;), but other ports can be used. This does not preclude HTTP from being implemented on top of any other protocol on the Internet,
     1006               or on other networks. HTTP only presumes a reliable transport; any protocol that provides such guarantees can be used; the
     1007               mapping of the HTTP/1.1 request and response structures onto the transport data units of the protocol in question is outside
     1008               the scope of this specification.
     1009            </p>
     1010            <p id="rfc.section.2.4.p.3">In HTTP/1.0, most implementations used a new connection for each request/response exchange. In HTTP/1.1, a connection may
     1011               be used for one or more request/response exchanges, although connections may be closed for a variety of reasons (see <a href="#persistent.connections" title="Persistent Connections">Section&nbsp;7.1</a>).
     1012            </p>
     1013         </div>
     1014         <div id="http.version">
     1015            <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;<a href="#http.version">HTTP Version</a></h2>
     1016            <p id="rfc.section.2.5.p.1">HTTP uses a "&lt;major&gt;.&lt;minor&gt;" numbering scheme to indicate versions of the protocol. The protocol versioning policy is intended
     1017               to allow the sender to indicate the format of a message and its capacity for understanding further HTTP communication, rather
     1018               than the features obtained via that communication. No change is made to the version number for the addition of message components
     1019               which do not affect communication behavior or which only add to extensible field values. The &lt;minor&gt; number is incremented
     1020               when the changes made to the protocol add features which do not change the general message parsing algorithm, but which may
     1021               add to the message semantics and imply additional capabilities of the sender. The &lt;major&gt; number is incremented when the format
     1022               of a message within the protocol is changed. See <a href="#RFC2145" id="rfc.xref.RFC2145.1"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a> for a fuller explanation.
     1023            </p>
     1024            <p id="rfc.section.2.5.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>
     1025            <div id="rfc.figure.u.20"></div><pre class="inline"><span id="rfc.iref.g.24"></span><span id="rfc.iref.g.25"></span>  <a href="#http.version" class="smpl">HTTP-Version</a>   = <a href="#http.version" class="smpl">HTTP-Prot-Name</a> "/" 1*<a href="#core.rules" class="smpl">DIGIT</a> "." 1*<a href="#core.rules" class="smpl">DIGIT</a>
    10041026  <a href="#http.version" class="smpl">HTTP-Prot-Name</a> = %x48.54.54.50 ; "HTTP", case-sensitive
    10051027</pre><p id="rfc.section.2.5.p.4">Note that the major and minor numbers <em class="bcp14">MUST</em> be treated as separate integers and that each <em class="bcp14">MAY</em> be incremented higher than a single digit. Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is lower than HTTP/12.3.
    1006          Leading zeros <em class="bcp14">MUST</em> be ignored by recipients and <em class="bcp14">MUST NOT</em> be sent.
    1007       </p>
    1008       <p id="rfc.section.2.5.p.5">An application that sends a request or response message that includes HTTP-Version of "HTTP/1.1" <em class="bcp14">MUST</em> be at least conditionally compliant with this specification. Applications that are at least conditionally compliant with this
    1009          specification <em class="bcp14">SHOULD</em> use an HTTP-Version of "HTTP/1.1" in their messages, and <em class="bcp14">MUST</em> do so for any message that is not compatible with HTTP/1.0. For more details on when to send specific HTTP-Version values,
    1010          see <a href="#RFC2145" id="rfc.xref.RFC2145.2"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a>.
    1011       </p>
    1012       <p id="rfc.section.2.5.p.6">The HTTP version of an application is the highest HTTP version for which the application is at least conditionally compliant.</p>
    1013       <p id="rfc.section.2.5.p.7">Proxy and gateway applications need to be careful when forwarding messages in protocol versions different from that of the
    1014          application. Since the protocol version indicates the protocol capability of the sender, a proxy/gateway <em class="bcp14">MUST NOT</em> send a message with a version indicator which is greater than its actual version. If a higher version request is received,
    1015          the proxy/gateway <em class="bcp14">MUST</em> either downgrade the request version, or respond with an error, or switch to tunnel behavior.
    1016       </p>
    1017       <p id="rfc.section.2.5.p.8">Due to interoperability problems with HTTP/1.0 proxies discovered since the publication of <a href="#RFC2068" id="rfc.xref.RFC2068.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, caching proxies <em class="bcp14">MUST</em>, gateways <em class="bcp14">MAY</em>, and tunnels <em class="bcp14">MUST NOT</em> upgrade the request to the highest version they support. The proxy/gateway's response to that request <em class="bcp14">MUST</em> be in the same major version as the request.
    1018       </p>
    1019       <div class="note" id="rfc.section.2.5.p.9">
    1020          <p> <b>Note:</b> Converting between versions of HTTP may involve modification of header fields required or forbidden by the versions involved.
    1021          </p>
    1022       </div>
    1023       <div id="rfc.iref.r.4"></div>
    1024       <h2 id="rfc.section.2.6"><a href="#rfc.section.2.6">2.6</a>&nbsp;<a id="uri" href="#uri">Uniform Resource Identifiers</a></h2>
    1025       <p id="rfc.section.2.6.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,
    1026          and define relationships. HTTP does not limit what a resource may be; it merely defines an interface that can be used to interact
    1027          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>.
    1028       </p>
    1029       <p id="rfc.section.2.6.p.2">This specification adopts the definitions of "URI-reference", "absolute-URI", "relative-part", "port", "host", "path-abempty",
    1030          "path-absolute", "query", and "authority" from <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 without a fragment.
    1031       </p>
    1032       <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.26"></span><span id="rfc.iref.g.27"></span><span id="rfc.iref.g.28"></span><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="#uri" class="smpl">URI</a>           = &lt;URI, 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-3">Section 3</a>&gt;
    1033   <a href="#uri" class="smpl">URI-reference</a> = &lt;URI-reference, 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.1">Section 4.1</a>&gt;
    1034   <a href="#uri" class="smpl">absolute-URI</a>  = &lt;absolute-URI, 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.3">Section 4.3</a>&gt;
    1035   <a href="#uri" class="smpl">relative-part</a> = &lt;relative-part, 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-4.2">Section 4.2</a>&gt;
    1036   <a href="#uri" class="smpl">authority</a>     = &lt;authority, 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.2">Section 3.2</a>&gt;
    1037   <a href="#uri" class="smpl">path-abempty</a>  = &lt;path-abempty, 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;
    1038   <a href="#uri" class="smpl">path-absolute</a> = &lt;path-absolute, 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.3">Section 3.3</a>&gt;
    1039   <a href="#uri" class="smpl">port</a>          = &lt;port, 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.2.3">Section 3.2.3</a>&gt;
    1040   <a href="#uri" class="smpl">query</a>         = &lt;query, 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.4">Section 3.4</a>&gt;
    1041   <a href="#uri" class="smpl">uri-host</a>      = &lt;host, defined in <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>&gt;
     1028               Leading zeros <em class="bcp14">MUST</em> be ignored by recipients and <em class="bcp14">MUST NOT</em> be sent.
     1029            </p>
     1030            <p id="rfc.section.2.5.p.5">An application that sends a request or response message that includes HTTP-Version of "HTTP/1.1" <em class="bcp14">MUST</em> be at least conditionally compliant with this specification. Applications that are at least conditionally compliant with this
     1031               specification <em class="bcp14">SHOULD</em> use an HTTP-Version of "HTTP/1.1" in their messages, and <em class="bcp14">MUST</em> do so for any message that is not compatible with HTTP/1.0. For more details on when to send specific HTTP-Version values,
     1032               see <a href="#RFC2145" id="rfc.xref.RFC2145.2"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a>.
     1033            </p>
     1034            <p id="rfc.section.2.5.p.6">The HTTP version of an application is the highest HTTP version for which the application is at least conditionally compliant.</p>
     1035            <p id="rfc.section.2.5.p.7">Proxy and gateway applications need to be careful when forwarding messages in protocol versions different from that of the
     1036               application. Since the protocol version indicates the protocol capability of the sender, a proxy/gateway <em class="bcp14">MUST NOT</em> send a message with a version indicator which is greater than its actual version. If a higher version request is received,
     1037               the proxy/gateway <em class="bcp14">MUST</em> either downgrade the request version, or respond with an error, or switch to tunnel behavior.
     1038            </p>
     1039            <p id="rfc.section.2.5.p.8">Due to interoperability problems with HTTP/1.0 proxies discovered since the publication of <a href="#RFC2068" id="rfc.xref.RFC2068.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, caching proxies <em class="bcp14">MUST</em>, gateways <em class="bcp14">MAY</em>, and tunnels <em class="bcp14">MUST NOT</em> upgrade the request to the highest version they support. The proxy/gateway's response to that request <em class="bcp14">MUST</em> be in the same major version as the request.
     1040            </p>
     1041            <div class="note" id="rfc.section.2.5.p.9">
     1042               <p><b>Note:</b> Converting between versions of HTTP may involve modification of header fields required or forbidden by the versions involved.
     1043               </p>
     1044            </div>
     1045         </div>
     1046         <div id="uri">
     1047            <div id="rfc.iref.r.4"></div>
     1048            <h2 id="rfc.section.2.6"><a href="#rfc.section.2.6">2.6</a>&nbsp;<a href="#uri">Uniform Resource Identifiers</a></h2>
     1049            <p id="rfc.section.2.6.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,
     1050               and define relationships. HTTP does not limit what a resource may be; it merely defines an interface that can be used to interact
     1051               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>.
     1052            </p>
     1053            <p id="rfc.section.2.6.p.2">This specification adopts the definitions of "URI-reference", "absolute-URI", "relative-part", "port", "host", "path-abempty",
     1054               "path-absolute", "query", and "authority" from <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 without a fragment.
     1055            </p>
     1056            <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.26"></span><span id="rfc.iref.g.27"></span><span id="rfc.iref.g.28"></span><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="#uri" class="smpl">URI</a>           = &lt;URI, 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-3">Section 3</a>&gt;
     1057  <a href="#uri" class="smpl">URI-reference</a> = &lt;URI-reference, 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.1">Section 4.1</a>&gt;
     1058  <a href="#uri" class="smpl">absolute-URI</a>  = &lt;absolute-URI, 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.3">Section 4.3</a>&gt;
     1059  <a href="#uri" class="smpl">relative-part</a> = &lt;relative-part, 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-4.2">Section 4.2</a>&gt;
     1060  <a href="#uri" class="smpl">authority</a>     = &lt;authority, 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.2">Section 3.2</a>&gt;
     1061  <a href="#uri" class="smpl">path-abempty</a>  = &lt;path-abempty, 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;
     1062  <a href="#uri" class="smpl">path-absolute</a> = &lt;path-absolute, 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.3">Section 3.3</a>&gt;
     1063  <a href="#uri" class="smpl">port</a>          = &lt;port, 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.2.3">Section 3.2.3</a>&gt;
     1064  <a href="#uri" class="smpl">query</a>         = &lt;query, 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.4">Section 3.4</a>&gt;
     1065  <a href="#uri" class="smpl">uri-host</a>      = &lt;host, defined in <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>&gt;
    10421066 
    10431067  <a href="#uri" class="smpl">partial-URI</a>   = relative-part [ "?" query ]
    10441068</pre><p id="rfc.section.2.6.p.4">Each protocol element in HTTP that allows a URI reference will indicate in its ABNF production whether the element allows
    1045          only a URI in absolute form (absolute-URI), any relative reference (relative-ref), or some other subset of the URI-reference
    1046          grammar. Unless otherwise indicated, URI references are parsed relative to the request target (the default base URI for both
    1047          the request and its corresponding response).
    1048       </p>
    1049       <h3 id="rfc.section.2.6.1"><a href="#rfc.section.2.6.1">2.6.1</a>&nbsp;<a id="http.uri" href="#http.uri">http URI scheme</a></h3>
    1050       <div id="rfc.iref.h.1"></div>
    1051       <div id="rfc.iref.u.3"></div>
    1052       <p id="rfc.section.2.6.1.p.1">The "http" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
    1053          namespace governed by a potential HTTP origin server listening for TCP connections on a given port. The HTTP server is identified
    1054          via the generic syntax's <a href="#uri" class="smpl">authority</a> component, which includes a host identifier and optional TCP port, and the remainder of the URI is considered to be identifying
    1055          data corresponding to a resource for which that server might provide an HTTP interface.
    1056       </p>
    1057       <div id="rfc.figure.u.22"></div><pre class="inline"><span id="rfc.iref.g.33"></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> ]
    1058 </pre><p id="rfc.section.2.6.1.p.3">The host identifier within an <a href="#uri" class="smpl">authority</a> component is defined in <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.2">Section 3.2.2</a>. If host is provided as an IP literal or IPv4 address, then the HTTP server is any listener on the indicated TCP port at
    1059          that IP address. If host is a registered name, then that name is considered an indirect identifier and the recipient might
    1060          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
    1061          port for WWW services).
    1062       </p>
    1063       <p id="rfc.section.2.6.1.p.4">Regardless of the form of host identifier, access to that host is not implied by the mere presence of its name or address.
    1064          The host may or may not exist and, even when it does exist, may or may not be running an HTTP server or listening to the indicated
    1065          port. The "http" URI scheme makes use of the delegated nature of Internet names and addresses to establish a naming authority
    1066          (whatever entity has the ability to place an HTTP server at that Internet name or address) and allows that authority to determine
    1067          which names are valid and how they might be used.
    1068       </p>
    1069       <p id="rfc.section.2.6.1.p.5">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,
    1070          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.
    1071       </p>
    1072       <p id="rfc.section.2.6.1.p.6">Although HTTP is independent of the transport protocol, the "http" scheme is specific to TCP-based services because the name
    1073          delegation process depends on TCP for establishing authority. An HTTP service based on some other underlying connection protocol
    1074          would presumably be identified using a different URI scheme, just as the "https" scheme (below) is used for servers that require
    1075          an SSL/TLS transport layer on a connection. Other protocols may also be used to provide access to "http" identified resources
    1076          --- it is only the authoritative interface used for mapping the namespace that is specific to TCP.
    1077       </p>
    1078       <h3 id="rfc.section.2.6.2"><a href="#rfc.section.2.6.2">2.6.2</a>&nbsp;<a id="https.uri" href="#https.uri">https URI scheme</a></h3>
    1079       <div id="rfc.iref.h.2"></div>
    1080       <div id="rfc.iref.u.4"></div>
    1081       <p id="rfc.section.2.6.2.p.1">The "https" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
    1082          namespace governed by a potential HTTP origin server listening for SSL/TLS-secured connections on a given TCP port. The host
    1083          and port are determined in the same way as for the "http" scheme, except that a default TCP port of 443 is assumed if the
    1084          port subcomponent is empty or not given.
    1085       </p>
    1086       <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.34"></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> ]
     1069               only a URI in absolute form (absolute-URI), any relative reference (relative-ref), or some other subset of the URI-reference
     1070               grammar. Unless otherwise indicated, URI references are parsed relative to the request target (the default base URI for both
     1071               the request and its corresponding response).
     1072            </p>
     1073            <div id="http.uri">
     1074               <h3 id="rfc.section.2.6.1"><a href="#rfc.section.2.6.1">2.6.1</a>&nbsp;<a href="#http.uri">http URI scheme</a></h3>
     1075               <div id="rfc.iref.h.1"></div>
     1076               <div id="rfc.iref.u.3"></div>
     1077               <p id="rfc.section.2.6.1.p.1">The "http" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
     1078                  namespace governed by a potential HTTP origin server listening for TCP connections on a given port. The HTTP server is identified
     1079                  via the generic syntax's <a href="#uri" class="smpl">authority</a> component, which includes a host identifier and optional TCP port, and the remainder of the URI is considered to be identifying
     1080                  data corresponding to a resource for which that server might provide an HTTP interface.
     1081               </p>
     1082               <div id="rfc.figure.u.22"></div><pre class="inline"><span id="rfc.iref.g.33"></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> ]
     1083</pre><p id="rfc.section.2.6.1.p.3">The host identifier within an <a href="#uri" class="smpl">authority</a> component is defined in <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.2">Section 3.2.2</a>. If host is provided as an IP literal or IPv4 address, then the HTTP server is any listener on the indicated TCP port at
     1084                  that IP address. If host is a registered name, then that name is considered an indirect identifier and the recipient might
     1085                  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
     1086                  port for WWW services).
     1087               </p>
     1088               <p id="rfc.section.2.6.1.p.4">Regardless of the form of host identifier, access to that host is not implied by the mere presence of its name or address.
     1089                  The host may or may not exist and, even when it does exist, may or may not be running an HTTP server or listening to the indicated
     1090                  port. The "http" URI scheme makes use of the delegated nature of Internet names and addresses to establish a naming authority
     1091                  (whatever entity has the ability to place an HTTP server at that Internet name or address) and allows that authority to determine
     1092                  which names are valid and how they might be used.
     1093               </p>
     1094               <p id="rfc.section.2.6.1.p.5">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,
     1095                  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.
     1096               </p>
     1097               <p id="rfc.section.2.6.1.p.6">Although HTTP is independent of the transport protocol, the "http" scheme is specific to TCP-based services because the name
     1098                  delegation process depends on TCP for establishing authority. An HTTP service based on some other underlying connection protocol
     1099                  would presumably be identified using a different URI scheme, just as the "https" scheme (below) is used for servers that require
     1100                  an SSL/TLS transport layer on a connection. Other protocols may also be used to provide access to "http" identified resources
     1101                  --- it is only the authoritative interface used for mapping the namespace that is specific to TCP.
     1102               </p>
     1103            </div>
     1104            <div id="https.uri">
     1105               <h3 id="rfc.section.2.6.2"><a href="#rfc.section.2.6.2">2.6.2</a>&nbsp;<a href="#https.uri">https URI scheme</a></h3>
     1106               <div id="rfc.iref.h.2"></div>
     1107               <div id="rfc.iref.u.4"></div>
     1108               <p id="rfc.section.2.6.2.p.1">The "https" URI scheme is hereby defined for the purpose of minting identifiers according to their association with the hierarchical
     1109                  namespace governed by a potential HTTP origin server listening for SSL/TLS-secured connections on a given TCP port. The host
     1110                  and port are determined in the same way as for the "http" scheme, except that a default TCP port of 443 is assumed if the
     1111                  port subcomponent is empty or not given.
     1112               </p>
     1113               <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.34"></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> ]
    10871114</pre><p id="rfc.section.2.6.2.p.3">The primary difference between the "http" and "https" schemes is that interaction with the latter is required to be secured
    1088          for privacy through the use of strong encryption. The URI cannot be sent in a request until the connection is secure. Likewise,
    1089          the default for caching is that each response that would be considered "public" under the "http" scheme is instead treated
    1090          as "private" and thus not eligible for shared caching.
    1091       </p>
    1092       <p id="rfc.section.2.6.2.p.4">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>.
    1093       </p>
    1094       <h3 id="rfc.section.2.6.3"><a href="#rfc.section.2.6.3">2.6.3</a>&nbsp;<a id="uri.comparison" href="#uri.comparison">http and https URI Normalization and Comparison</a></h3>
    1095       <p id="rfc.section.2.6.3.p.1">Since the "http" and "https" schemes conform to the URI generic syntax, such URIs are normalized and compared according to
    1096          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.
    1097       </p>
    1098       <p id="rfc.section.2.6.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
    1099          path component is equivalent to an absolute path of "/", so the normal form is to provide a path of "/" instead. The scheme
    1100          and host are case-insensitive and normally provided in lowercase; all other components are compared in a case-sensitive manner.
    1101          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.
    1102       </p>
    1103       <p id="rfc.section.2.6.3.p.3">For example, the following three URIs are equivalent:</p>
    1104       <div id="rfc.figure.u.24"></div><pre class="text">   http://example.com:80/~smith/home.html
     1115                  for privacy through the use of strong encryption. The URI cannot be sent in a request until the connection is secure. Likewise,
     1116                  the default for caching is that each response that would be considered "public" under the "http" scheme is instead treated
     1117                  as "private" and thus not eligible for shared caching.
     1118               </p>
     1119               <p id="rfc.section.2.6.2.p.4">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>.
     1120               </p>
     1121            </div>
     1122            <div id="uri.comparison">
     1123               <h3 id="rfc.section.2.6.3"><a href="#rfc.section.2.6.3">2.6.3</a>&nbsp;<a href="#uri.comparison">http and https URI Normalization and Comparison</a></h3>
     1124               <p id="rfc.section.2.6.3.p.1">Since the "http" and "https" schemes conform to the URI generic syntax, such URIs are normalized and compared according to
     1125                  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.
     1126               </p>
     1127               <p id="rfc.section.2.6.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
     1128                  path component is equivalent to an absolute path of "/", so the normal form is to provide a path of "/" instead. The scheme
     1129                  and host are case-insensitive and normally provided in lowercase; all other components are compared in a case-sensitive manner.
     1130                  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.
     1131               </p>
     1132               <p id="rfc.section.2.6.3.p.3">For example, the following three URIs are equivalent:</p>
     1133               <div id="rfc.figure.u.24"></div><pre class="text">   http://example.com:80/~smith/home.html
    11051134   http://EXAMPLE.com/%7Esmith/home.html
    11061135   http://EXAMPLE.com:/%7esmith/home.html
    1107 </pre><p id="rfc.section.2.6.3.p.5"> <span class="comment" id="TODO-not-here">[<a href="#TODO-not-here" class="smpl">TODO-not-here</a>: This paragraph does not belong here. --roy]</span> If path-abempty is the empty string (i.e., there is no slash "/" path separator following the authority), then the "http"
    1108          URI <em class="bcp14">MUST</em> be given as "/" when used as a request-target (<a href="#request-target" title="request-target">Section&nbsp;4.1.2</a>). If a proxy receives a host name which 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.
    1109       </p>
    1110       <h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="http.message" href="#http.message">HTTP Message</a></h1>
    1111       <div id="rfc.iref.h.3"></div>
    1112       <div id="rfc.iref.h.4"></div>
    1113       <div id="rfc.iref.h.5"></div>
    1114       <p id="rfc.section.3.p.1">All HTTP/1.1 messages consist of a start-line followed by a sequence of characters in a format similar to the Internet Message
    1115          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
    1116          the end of the header section, and an optional message-body.
    1117       </p>
    1118       <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
    1119          types of message differ only in the start-line, which is either a Request-Line (for requests) or a Status-Line (for responses),
    1120          and in the algorithm for determining the length of the message-body (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>). In theory, a client could receive requests and a server could receive responses, distinguishing them by their different
    1121          start-line formats, but in practice servers are implemented to only expect a request (a response is interpreted as an unknown
    1122          or invalid request method) and clients are implemented to only expect a response.
    1123       </p>
    1124       <div id="rfc.figure.u.25"></div><pre class="inline"><span id="rfc.iref.g.35"></span>  <a href="#http.message" class="smpl">HTTP-message</a>    = <a href="#http.message" class="smpl">start-line</a>
     1136</pre><p id="rfc.section.2.6.3.p.5"><span class="comment" id="TODO-not-here">[<a href="#TODO-not-here" class="smpl">TODO-not-here</a>: This paragraph does not belong here. --roy]</span> If path-abempty is the empty string (i.e., there is no slash "/" path separator following the authority), then the "http"
     1137                  URI <em class="bcp14">MUST</em> be given as "/" when used as a request-target (<a href="#request-target" title="request-target">Section&nbsp;4.1.2</a>). If a proxy receives a host name which 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.
     1138               </p>
     1139            </div>
     1140         </div>
     1141      </div>
     1142      <div id="http.message">
     1143         <h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a href="#http.message">HTTP Message</a></h1>
     1144         <div id="rfc.iref.h.3"></div>
     1145         <div id="rfc.iref.h.4"></div>
     1146         <div id="rfc.iref.h.5"></div>
     1147         <p id="rfc.section.3.p.1">All HTTP/1.1 messages consist of a start-line followed by a sequence of characters in a format similar to the Internet Message
     1148            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
     1149            the end of the header section, and an optional message-body.
     1150         </p>
     1151         <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
     1152            types of message differ only in the start-line, which is either a Request-Line (for requests) or a Status-Line (for responses),
     1153            and in the algorithm for determining the length of the message-body (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>). In theory, a client could receive requests and a server could receive responses, distinguishing them by their different
     1154            start-line formats, but in practice servers are implemented to only expect a request (a response is interpreted as an unknown
     1155            or invalid request method) and clients are implemented to only expect a response.
     1156         </p>
     1157         <div id="rfc.figure.u.25"></div><pre class="inline"><span id="rfc.iref.g.35"></span>  <a href="#http.message" class="smpl">HTTP-message</a>    = <a href="#http.message" class="smpl">start-line</a>
    11251158                    *( <a href="#header.fields" class="smpl">header-field</a> <a href="#core.rules" class="smpl">CRLF</a> )
    11261159                    <a href="#core.rules" class="smpl">CRLF</a>
     
    11281161  <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>
    11291162</pre><p id="rfc.section.3.p.4">Whitespace (WSP) <em class="bcp14">MUST NOT</em> be sent between the start-line and the first header field. The presence of whitespace might be an attempt to trick a noncompliant
    1130          implementation of HTTP into ignoring that field or processing the next line as a new request, either of which may result in
    1131          security issues when implementations within the request chain interpret the same message differently. HTTP/1.1 servers <em class="bcp14">MUST</em> reject such a message with a 400 (Bad Request) response.
    1132       </p>
    1133       <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 Robustness</a></h2>
    1134       <p id="rfc.section.3.1.p.1">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
    1135          stream at the beginning of a message and receives a CRLF first, it should ignore the CRLF.
    1136       </p>
    1137       <p id="rfc.section.3.1.p.2">Some old HTTP/1.0 client implementations generate an extra CRLF after a POST request as a lame workaround for some early server
    1138          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
    1139          the client <em class="bcp14">MUST</em> include the terminating CRLF octets as part of the message-body length.
    1140       </p>
    1141       <p id="rfc.section.3.1.p.3">The normal procedure for parsing an HTTP message is to read the start-line into a structure, read each header field into a
    1142          hash table by field name until the empty line, and then use the parsed data to determine if a message-body is expected. If
    1143          a message-body has been indicated, then it is read as a stream until an amount of OCTETs equal to the message-length is read
    1144          or the connection is closed. Care must be taken to parse an HTTP message as a sequence of OCTETs in an encoding that is a
    1145          superset of US-ASCII. Attempting to parse HTTP as a stream of Unicode characters in a character encoding like UTF-16 may introduce
    1146          security flaws due to the differing ways that such parsers interpret invalid characters.
    1147       </p>
    1148       <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>
    1149       <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
    1150          value.
    1151       </p>
    1152       <div id="rfc.figure.u.26"></div><pre class="inline"><span id="rfc.iref.g.36"></span><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span><span id="rfc.iref.g.39"></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>
     1163            implementation of HTTP into ignoring that field or processing the next line as a new request, either of which may result in
     1164            security issues when implementations within the request chain interpret the same message differently. HTTP/1.1 servers <em class="bcp14">MUST</em> reject such a message with a 400 (Bad Request) response.
     1165         </p>
     1166         <div id="message.robustness">
     1167            <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a href="#message.robustness">Message Parsing Robustness</a></h2>
     1168            <p id="rfc.section.3.1.p.1">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
     1169               stream at the beginning of a message and receives a CRLF first, it should ignore the CRLF.
     1170            </p>
     1171            <p id="rfc.section.3.1.p.2">Some old HTTP/1.0 client implementations generate an extra CRLF after a POST request as a lame workaround for some early server
     1172               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
     1173               the client <em class="bcp14">MUST</em> include the terminating CRLF octets as part of the message-body length.
     1174            </p>
     1175            <p id="rfc.section.3.1.p.3">The normal procedure for parsing an HTTP message is to read the start-line into a structure, read each header field into a
     1176               hash table by field name until the empty line, and then use the parsed data to determine if a message-body is expected. If
     1177               a message-body has been indicated, then it is read as a stream until an amount of OCTETs equal to the message-length is read
     1178               or the connection is closed. Care must be taken to parse an HTTP message as a sequence of OCTETs in an encoding that is a
     1179               superset of US-ASCII. Attempting to parse HTTP as a stream of Unicode characters in a character encoding like UTF-16 may introduce
     1180               security flaws due to the differing ways that such parsers interpret invalid characters.
     1181            </p>
     1182         </div>
     1183         <div id="header.fields">
     1184            <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a href="#header.fields">Header Fields</a></h2>
     1185            <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
     1186               value.
     1187            </p>
     1188            <div id="rfc.figure.u.26"></div><pre class="inline"><span id="rfc.iref.g.36"></span><span id="rfc.iref.g.37"></span><span id="rfc.iref.g.38"></span><span id="rfc.iref.g.39"></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>
    11531189  <a href="#header.fields" class="smpl">field-name</a>     = <a href="#rule.token.separators" class="smpl">token</a>
    11541190  <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> )
    11551191  <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> )
    11561192</pre><p id="rfc.section.3.2.p.3">No whitespace is allowed between the header field name and colon. For security reasons, any request message received containing
    1157          such whitespace <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.
    1158       </p>
    1159       <p id="rfc.section.3.2.p.4">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
    1160          white space: OWS occurring before the first non-whitespace character of the field value or after the last non-whitespace character
    1161          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).
    1162       </p>
    1163       <p id="rfc.section.3.2.p.5">The order in which header fields with differing field names are received is not significant. However, it is "good practice"
    1164          to send header fields that contain control data first, such as Host on requests and Date on responses, so that implementations
    1165          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
    1166          conditionals, authentication credentials, or deliberately misleading duplicate header fields that would impact request processing.
    1167       </p>
    1168       <p id="rfc.section.3.2.p.6">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)].
    1169          Multiple header fields with the same field name can be combined into one "field-name: field-value" pair, without changing
    1170          the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by
    1171          a comma. The order in which header fields with the same field name are received is therefore significant to the interpretation
    1172          of the combined field value; a proxy <em class="bcp14">MUST NOT</em> change the order of these field values when forwarding a message.
    1173       </p>
    1174       <div class="note" id="rfc.section.3.2.p.7">
    1175          <p> <b>Note:</b> The "Set-Cookie" header as implemented in practice (as opposed to how it is specified in <a href="#RFC2109" id="rfc.xref.RFC2109.1"><cite title="HTTP State Management Mechanism">[RFC2109]</cite></a>) can occur multiple times, but does not use the list syntax, and thus cannot be combined into a single line. (See Appendix
    1176             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 specified in <a href="#RFC2965" id="rfc.xref.RFC2965.1"><cite title="HTTP State Management Mechanism">[RFC2965]</cite></a> does not share this problem.
    1177          </p>
    1178       </div>
    1179       <p id="rfc.section.3.2.p.8">Historically, HTTP header field values could be extended over multiple lines by preceding each extra line with at least one
    1180          space or horizontal tab character (line folding). This specification deprecates such line folding except within the message/http
    1181          media type (<a href="#internet.media.type.message.http" title="Internet Media Type message/http">Section&nbsp;10.3.1</a>). HTTP/1.1 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
    1182          message is intended for packaging within the message/http media type. HTTP/1.1 recipients <em class="bcp14">SHOULD</em> accept line folding and replace any embedded obs-fold whitespace with a single SP prior to interpreting the field value or
    1183          forwarding the message downstream.
    1184       </p>
    1185       <p id="rfc.section.3.2.p.9">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 characters. Recipients <em class="bcp14">SHOULD</em> treat other (obs-text) octets in field content as opaque data.
    1186       </p>
    1187       <div id="rule.comment">
    1188          <p id="rfc.section.3.2.p.10">    Comments can be included in some HTTP header fields by surrounding the comment text with parentheses. Comments are only allowed
    1189             in fields containing "comment" as part of their field value definition.
    1190          </p>
    1191       </div>
    1192       <div id="rfc.figure.u.27"></div><pre class="inline"><span id="rfc.iref.g.40"></span><span id="rfc.iref.g.41"></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> ) ")"
     1193               such whitespace <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.
     1194            </p>
     1195            <p id="rfc.section.3.2.p.4">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
     1196               white space: OWS occurring before the first non-whitespace character of the field value or after the last non-whitespace character
     1197               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).
     1198            </p>
     1199            <p id="rfc.section.3.2.p.5">The order in which header fields with differing field names are received is not significant. However, it is "good practice"
     1200               to send header fields that contain control data first, such as Host on requests and Date on responses, so that implementations
     1201               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
     1202               conditionals, authentication credentials, or deliberately misleading duplicate header fields that would impact request processing.
     1203            </p>
     1204            <p id="rfc.section.3.2.p.6">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)].
     1205               Multiple header fields with the same field name can be combined into one "field-name: field-value" pair, without changing
     1206               the semantics of the message, by appending each subsequent field value to the combined field value in order, separated by
     1207               a comma. The order in which header fields with the same field name are received is therefore significant to the interpretation
     1208               of the combined field value; a proxy <em class="bcp14">MUST NOT</em> change the order of these field values when forwarding a message.
     1209            </p>
     1210            <div class="note" id="rfc.section.3.2.p.7">
     1211               <p><b>Note:</b> The "Set-Cookie" header as implemented in practice (as opposed to how it is specified in <a href="#RFC2109" id="rfc.xref.RFC2109.1"><cite title="HTTP State Management Mechanism">[RFC2109]</cite></a>) can occur multiple times, but does not use the list syntax, and thus cannot be combined into a single line. (See Appendix
     1212                  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 specified in <a href="#RFC2965" id="rfc.xref.RFC2965.1"><cite title="HTTP State Management Mechanism">[RFC2965]</cite></a> does not share this problem.
     1213               </p>
     1214            </div>
     1215            <p id="rfc.section.3.2.p.8">Historically, HTTP header field values could be extended over multiple lines by preceding each extra line with at least one
     1216               space or horizontal tab character (line folding). This specification deprecates such line folding except within the message/http
     1217               media type (<a href="#internet.media.type.message.http" title="Internet Media Type message/http">Section&nbsp;10.3.1</a>). HTTP/1.1 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
     1218               message is intended for packaging within the message/http media type. HTTP/1.1 recipients <em class="bcp14">SHOULD</em> accept line folding and replace any embedded obs-fold whitespace with a single SP prior to interpreting the field value or
     1219               forwarding the message downstream.
     1220            </p>
     1221            <p id="rfc.section.3.2.p.9">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 characters. Recipients <em class="bcp14">SHOULD</em> treat other (obs-text) octets in field content as opaque data.
     1222            </p>
     1223            <div id="rule.comment">
     1224               <p id="rfc.section.3.2.p.10">  Comments can be included in some HTTP header fields by surrounding the comment text with parentheses. Comments are only allowed
     1225                  in fields containing "comment" as part of their field value definition.
     1226               </p>
     1227            </div>
     1228            <div id="rfc.figure.u.27"></div><pre class="inline"><span id="rfc.iref.g.40"></span><span id="rfc.iref.g.41"></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> ) ")"
    11931229  <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>
    11941230                 ; <a href="#rule.whitespace" class="smpl">OWS</a> / &lt;<a href="#core.rules" class="smpl">VCHAR</a> except "(", ")", and "\"&gt; / <a href="#rule.quoted-string" class="smpl">obs-text</a>
    11951231</pre><div id="rule.quoted-cpair">
    1196          <p id="rfc.section.3.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within comment constructs:</p>
    1197       </div>
    1198       <div id="rfc.figure.u.28"></div><pre class="inline"><span id="rfc.iref.g.42"></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> )
     1232               <p id="rfc.section.3.2.p.12"> The backslash character ("\") can be used as a single-character quoting mechanism within comment constructs:</p>
     1233            </div>
     1234            <div id="rfc.figure.u.28"></div><pre class="inline"><span id="rfc.iref.g.42"></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> )
    11991235</pre><p id="rfc.section.3.2.p.14">Producers <em class="bcp14">SHOULD NOT</em> escape characters that do not require escaping (i.e., other than the backslash character "\" and the parentheses "(" and ")").
    1200       </p>
    1201       <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>
    1202       <p id="rfc.section.3.3.p.1">The message-body (if any) of an HTTP message is used to carry the entity-body associated with the request or response. The
    1203          message-body differs from the entity-body only when a transfer-coding has been applied, as indicated by the Transfer-Encoding
    1204          header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.1" title="Transfer-Encoding">Section&nbsp;9.7</a>).
    1205       </p>
    1206       <div id="rfc.figure.u.29"></div><pre class="inline"><span id="rfc.iref.g.43"></span>  <a href="#message.body" class="smpl">message-body</a> = <a href="#abnf.dependencies" class="smpl">entity-body</a>
     1236            </p>
     1237         </div>
     1238         <div id="message.body">
     1239            <h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;<a href="#message.body">Message Body</a></h2>
     1240            <p id="rfc.section.3.3.p.1">The message-body (if any) of an HTTP message is used to carry the entity-body associated with the request or response. The
     1241               message-body differs from the entity-body only when a transfer-coding has been applied, as indicated by the Transfer-Encoding
     1242               header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.1" title="Transfer-Encoding">Section&nbsp;9.7</a>).
     1243            </p>
     1244            <div id="rfc.figure.u.29"></div><pre class="inline"><span id="rfc.iref.g.43"></span>  <a href="#message.body" class="smpl">message-body</a> = <a href="#abnf.dependencies" class="smpl">entity-body</a>
    12071245               / &lt;entity-body encoded as per <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a>&gt;
    12081246</pre><p id="rfc.section.3.3.p.3">Transfer-Encoding <em class="bcp14">MUST</em> be used to indicate any transfer-codings applied by an application to ensure safe and proper transfer of the message. Transfer-Encoding
    1209          is a property of the message, not of the entity, and thus <em class="bcp14">MAY</em> be added or removed by any application along the request/response chain. (However, <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a> places restrictions on when certain transfer-codings may be used.)
    1210       </p>
    1211       <p id="rfc.section.3.3.p.4">The rules for when a message-body is allowed in a message differ for requests and responses.</p>
    1212       <p id="rfc.section.3.3.p.5">The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field
    1213          in the request's header fields. When a request message contains both a message-body of non-zero length and a method that does
    1214          not define any semantics for that request message-body, then an origin server <em class="bcp14">SHOULD</em> either ignore the message-body or respond with an appropriate error message (e.g., 413). A proxy or gateway, when presented
    1215          the same request, <em class="bcp14">SHOULD</em> either forward the request inbound with the message-body or ignore the message-body when determining a response.
    1216       </p>
    1217       <p id="rfc.section.3.3.p.6">For response messages, whether or not a message-body is included with a message is dependent on both the request method and
    1218          the response status code (<a href="#status.code.and.reason.phrase" title="Status Code and Reason Phrase">Section&nbsp;5.1.1</a>). All responses to the HEAD request method <em class="bcp14">MUST NOT</em> include a message-body, even though the presence of entity-header fields might lead one to believe they do. All 1xx (Informational),
    1219          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 it <em class="bcp14">MAY</em> be of zero length.
    1220       </p>
    1221       <h2 id="rfc.section.3.4"><a href="#rfc.section.3.4">3.4</a>&nbsp;<a id="message.length" href="#message.length">Message Length</a></h2>
    1222       <p id="rfc.section.3.4.p.1">The transfer-length of a message is the length of the message-body as it appears in the message; that is, after any transfer-codings
    1223          have been applied. When a message-body is included with a message, the transfer-length of that body is determined by one of
    1224          the following (in order of precedence):
    1225       </p>
    1226       <p id="rfc.section.3.4.p.2"> </p>
    1227       <ol>
    1228          <li>
    1229             <p>Any response message which "<em class="bcp14">MUST NOT</em>" include a message-body (such as the 1xx, 204, and 304 responses and any response to a HEAD request) is always terminated
    1230                by the first empty line after the header fields, regardless of the entity-header fields present in the message.
    1231             </p>
    1232          </li>
    1233          <li>
    1234             <p>If a Transfer-Encoding header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.2" title="Transfer-Encoding">Section&nbsp;9.7</a>) is present and the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>) is used, the transfer-length is defined by the use of this transfer-coding. If a Transfer-Encoding header field is present
    1235                and the "chunked" transfer-coding is not present, the transfer-length is defined by the sender closing the connection.
    1236             </p>
    1237          </li>
    1238          <li>
    1239             <p>If a Content-Length header field (<a href="#header.content-length" id="rfc.xref.header.content-length.1" title="Content-Length">Section&nbsp;9.2</a>) is present, its value in OCTETs represents both the entity-length and the transfer-length. The Content-Length header field <em class="bcp14">MUST NOT</em> be sent if these two lengths are different (i.e., if a Transfer-Encoding header field is present). If a message is received
    1240                with both a Transfer-Encoding header field and a Content-Length header field, the latter <em class="bcp14">MUST</em> be ignored.
    1241             </p>
    1242          </li>
    1243          <li>
    1244             <p>If the message uses the media type "multipart/byteranges", and the transfer-length is not otherwise specified, then this self-delimiting
    1245                media type defines the transfer-length. This media type <em class="bcp14">MUST NOT</em> be used unless the sender knows that the recipient can parse it; the presence in a request of a Range header with multiple
    1246                byte-range specifiers from a HTTP/1.1 client implies that the client can parse multipart/byteranges responses.
    1247             </p>
    1248             <ul class="empty">
    1249                <li>A range header might be forwarded by a HTTP/1.0 proxy that does not understand multipart/byteranges; in this case the server <em class="bcp14">MUST</em> delimit the message using methods defined in items 1, 3 or 5 of this section.
    1250                </li>
    1251             </ul>
    1252          </li>
    1253          <li>
    1254             <p>By the server closing the connection. (Closing the connection cannot be used to indicate the end of a request body, since
    1255                that would leave no possibility for the server to send back a response.)
    1256             </p>
    1257          </li>
    1258       </ol>
    1259       <p id="rfc.section.3.4.p.3">For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body <em class="bcp14">MUST</em> include a valid Content-Length header field unless the server is known to be HTTP/1.1 compliant. If a request contains a message-body
    1260          and a Content-Length is not given, the server <em class="bcp14">SHOULD</em> respond with 400 (Bad Request) if it cannot determine the length of the message, or with 411 (Length Required) if it wishes
    1261          to insist on receiving a valid Content-Length.
    1262       </p>
    1263       <p id="rfc.section.3.4.p.4">All HTTP/1.1 applications that receive entities <em class="bcp14">MUST</em> accept the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>), thus allowing this mechanism to be used for messages when the message length cannot be determined in advance.
    1264       </p>
    1265       <p id="rfc.section.3.4.p.5">Messages <em class="bcp14">MUST NOT</em> include both a Content-Length header field and a transfer-coding. If the message does include a transfer-coding, the Content-Length <em class="bcp14">MUST</em> be ignored.
    1266       </p>
    1267       <p id="rfc.section.3.4.p.6">When a Content-Length is given in a message where a message-body is allowed, its field value <em class="bcp14">MUST</em> exactly match the number of OCTETs in the message-body. HTTP/1.1 user agents <em class="bcp14">MUST</em> notify the user when an invalid length is received and detected.
    1268       </p>
    1269       <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>
    1270       <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
    1271          to the entity being transferred. These header fields apply only to the message being transmitted.
    1272       </p>
    1273       <div id="rfc.figure.u.30"></div><pre class="inline"><span id="rfc.iref.g.44"></span>  <a href="#general.header.fields" class="smpl">general-header</a> = <a href="#abnf.dependencies" class="smpl">Cache-Control</a>            ; <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.cache-control" title="Cache-Control">Section 3.2</a>
     1247               is a property of the message, not of the entity, and thus <em class="bcp14">MAY</em> be added or removed by any application along the request/response chain. (However, <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a> places restrictions on when certain transfer-codings may be used.)
     1248            </p>
     1249            <p id="rfc.section.3.3.p.4">The rules for when a message-body is allowed in a message differ for requests and responses.</p>
     1250            <p id="rfc.section.3.3.p.5">The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field
     1251               in the request's header fields. When a request message contains both a message-body of non-zero length and a method that does
     1252               not define any semantics for that request message-body, then an origin server <em class="bcp14">SHOULD</em> either ignore the message-body or respond with an appropriate error message (e.g., 413). A proxy or gateway, when presented
     1253               the same request, <em class="bcp14">SHOULD</em> either forward the request inbound with the message-body or ignore the message-body when determining a response.
     1254            </p>
     1255            <p id="rfc.section.3.3.p.6">For response messages, whether or not a message-body is included with a message is dependent on both the request method and
     1256               the response status code (<a href="#status.code.and.reason.phrase" title="Status Code and Reason Phrase">Section&nbsp;5.1.1</a>). All responses to the HEAD request method <em class="bcp14">MUST NOT</em> include a message-body, even though the presence of entity-header fields might lead one to believe they do. All 1xx (Informational),
     1257               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 it <em class="bcp14">MAY</em> be of zero length.
     1258            </p>
     1259         </div>
     1260         <div id="message.length">
     1261            <h2 id="rfc.section.3.4"><a href="#rfc.section.3.4">3.4</a>&nbsp;<a href="#message.length">Message Length</a></h2>
     1262            <p id="rfc.section.3.4.p.1">The transfer-length of a message is the length of the message-body as it appears in the message; that is, after any transfer-codings
     1263               have been applied. When a message-body is included with a message, the transfer-length of that body is determined by one of
     1264               the following (in order of precedence):
     1265            </p>
     1266            <p id="rfc.section.3.4.p.2"></p>
     1267            <ol>
     1268               <li>
     1269                  <p>Any response message which "<em class="bcp14">MUST NOT</em>" include a message-body (such as the 1xx, 204, and 304 responses and any response to a HEAD request) is always terminated
     1270                     by the first empty line after the header fields, regardless of the entity-header fields present in the message.
     1271                  </p>
     1272               </li>
     1273               <li>
     1274                  <p>If a Transfer-Encoding header field (<a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.2" title="Transfer-Encoding">Section&nbsp;9.7</a>) is present and the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>) is used, the transfer-length is defined by the use of this transfer-coding. If a Transfer-Encoding header field is present
     1275                     and the "chunked" transfer-coding is not present, the transfer-length is defined by the sender closing the connection.
     1276                  </p>
     1277               </li>
     1278               <li>
     1279                  <p>If a Content-Length header field (<a href="#header.content-length" id="rfc.xref.header.content-length.1" title="Content-Length">Section&nbsp;9.2</a>) is present, its value in OCTETs represents both the entity-length and the transfer-length. The Content-Length header field <em class="bcp14">MUST NOT</em> be sent if these two lengths are different (i.e., if a Transfer-Encoding header field is present). If a message is received
     1280                     with both a Transfer-Encoding header field and a Content-Length header field, the latter <em class="bcp14">MUST</em> be ignored.
     1281                  </p>
     1282               </li>
     1283               <li>
     1284                  <p>If the message uses the media type "multipart/byteranges", and the transfer-length is not otherwise specified, then this self-delimiting
     1285                     media type defines the transfer-length. This media type <em class="bcp14">MUST NOT</em> be used unless the sender knows that the recipient can parse it; the presence in a request of a Range header with multiple
     1286                     byte-range specifiers from a HTTP/1.1 client implies that the client can parse multipart/byteranges responses.
     1287                  </p>
     1288                  <ul class="empty">
     1289                     <li>A range header might be forwarded by a HTTP/1.0 proxy that does not understand multipart/byteranges; in this case the server <em class="bcp14">MUST</em> delimit the message using methods defined in items 1, 3 or 5 of this section.
     1290                     </li>
     1291                  </ul>
     1292               </li>
     1293               <li>
     1294                  <p>By the server closing the connection. (Closing the connection cannot be used to indicate the end of a request body, since
     1295                     that would leave no possibility for the server to send back a response.)
     1296                  </p>
     1297               </li>
     1298            </ol>
     1299            <p id="rfc.section.3.4.p.3">For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body <em class="bcp14">MUST</em> include a valid Content-Length header field unless the server is known to be HTTP/1.1 compliant. If a request contains a message-body
     1300               and a Content-Length is not given, the server <em class="bcp14">SHOULD</em> respond with 400 (Bad Request) if it cannot determine the length of the message, or with 411 (Length Required) if it wishes
     1301               to insist on receiving a valid Content-Length.
     1302            </p>
     1303            <p id="rfc.section.3.4.p.4">All HTTP/1.1 applications that receive entities <em class="bcp14">MUST</em> accept the "chunked" transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>), thus allowing this mechanism to be used for messages when the message length cannot be determined in advance.
     1304            </p>
     1305            <p id="rfc.section.3.4.p.5">Messages <em class="bcp14">MUST NOT</em> include both a Content-Length header field and a transfer-coding. If the message does include a transfer-coding, the Content-Length <em class="bcp14">MUST</em> be ignored.
     1306            </p>
     1307            <p id="rfc.section.3.4.p.6">When a Content-Length is given in a message where a message-body is allowed, its field value <em class="bcp14">MUST</em> exactly match the number of OCTETs in the message-body. HTTP/1.1 user agents <em class="bcp14">MUST</em> notify the user when an invalid length is received and detected.
     1308            </p>
     1309         </div>
     1310         <div id="general.header.fields">
     1311            <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>
     1312            <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
     1313               to the entity being transferred. These header fields apply only to the message being transmitted.
     1314            </p>
     1315            <div id="rfc.figure.u.30"></div><pre class="inline"><span id="rfc.iref.g.44"></span>  <a href="#general.header.fields" class="smpl">general-header</a> = <a href="#abnf.dependencies" class="smpl">Cache-Control</a>            ; <a href="#Part6" id="rfc.xref.Part6.5"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.cache-control" title="Cache-Control">Section 3.2</a>
    12741316                 / <a href="#header.connection" class="smpl">Connection</a>               ; <a href="#header.connection" id="rfc.xref.header.connection.1" title="Connection">Section&nbsp;9.1</a>
    12751317                 / <a href="#header.date" class="smpl">Date</a>                     ; <a href="#header.date" id="rfc.xref.header.date.1" title="Date">Section&nbsp;9.3</a>
     
    12811323                 / <a href="#abnf.dependencies" class="smpl">Warning</a>                  ; <a href="#Part6" id="rfc.xref.Part6.7"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>, <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a>
    12821324</pre><p id="rfc.section.3.5.p.3">General-header field names can be extended reliably only in combination with a change in the protocol version. However, new
    1283          or experimental header fields may be given the semantics of general header fields if all parties in the communication recognize
    1284          them to be general-header fields. Unrecognized header fields are treated as entity-header fields.
    1285       </p>
    1286       <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a id="request" href="#request">Request</a></h1>
    1287       <p id="rfc.section.4.p.1">A request message from a client to a server includes, within the first line of that message, the method to be applied to the
    1288          resource, the identifier of the resource, and the protocol version in use.
    1289       </p>
    1290       <div id="rfc.figure.u.31"></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>
     1325               or experimental header fields may be given the semantics of general header fields if all parties in the communication recognize
     1326               them to be general-header fields. Unrecognized header fields are treated as entity-header fields.
     1327            </p>
     1328         </div>
     1329      </div>
     1330      <div id="request">
     1331         <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a href="#request">Request</a></h1>
     1332         <p id="rfc.section.4.p.1">A request message from a client to a server includes, within the first line of that message, the method to be applied to the
     1333            resource, the identifier of the resource, and the protocol version in use.
     1334         </p>
     1335         <div id="rfc.figure.u.31"></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>
    12911336                  *(( <a href="#general.header.fields" class="smpl">general-header</a>        ; <a href="#general.header.fields" title="General Header Fields">Section&nbsp;3.5</a>
    12921337                   / <a href="#abnf.dependencies" class="smpl">request-header</a>         ; <a href="#Part2" id="rfc.xref.Part2.3"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#request.header.fields" title="Request Header Fields">Section 3</a>
     
    12941339                  <a href="#core.rules" class="smpl">CRLF</a>
    12951340                  [ <a href="#message.body" class="smpl">message-body</a> ]          ; <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>
    1296 </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>
    1297       <p id="rfc.section.4.1.p.1">The Request-Line begins with a method token, followed by the request-target and the protocol version, and ending with CRLF.
    1298          The elements are separated by SP characters. No CR or LF is allowed except in the final CRLF sequence.
    1299       </p>
    1300       <div id="rfc.figure.u.32"></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>
    1301 </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>
    1302       <p id="rfc.section.4.1.1.p.1">The Method token indicates the method to be performed on the resource identified by the request-target. The method is case-sensitive.</p>
    1303       <div id="rfc.figure.u.33"></div><pre class="inline"><span id="rfc.iref.g.47"></span><span id="rfc.iref.g.48"></span>  <a href="#method" class="smpl">Method</a>         = <a href="#rule.token.separators" class="smpl">token</a>
    1304 </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>
    1305       <p id="rfc.section.4.1.2.p.1">The request-target identifies the resource upon which to apply the request.</p>
    1306       <div id="rfc.figure.u.34"></div><pre class="inline"><span id="rfc.iref.g.49"></span>  <a href="#request-target" class="smpl">request-target</a> = "*"
     1341</pre><div id="request-line">
     1342            <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a>&nbsp;<a href="#request-line">Request-Line</a></h2>
     1343            <p id="rfc.section.4.1.p.1">The Request-Line begins with a method token, followed by the request-target and the protocol version, and ending with CRLF.
     1344               The elements are separated by SP characters. No CR or LF is allowed except in the final CRLF sequence.
     1345            </p>
     1346            <div id="rfc.figure.u.32"></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>
     1347</pre><div id="method">
     1348               <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>
     1349               <p id="rfc.section.4.1.1.p.1">The Method token indicates the method to be performed on the resource identified by the request-target. The method is case-sensitive.</p>
     1350               <div id="rfc.figure.u.33"></div><pre class="inline"><span id="rfc.iref.g.47"></span><span id="rfc.iref.g.48"></span>  <a href="#method" class="smpl">Method</a>         = <a href="#rule.token.separators" class="smpl">token</a>
     1351</pre></div>
     1352            <div id="request-target">
     1353               <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>
     1354               <p id="rfc.section.4.1.2.p.1">The request-target identifies the resource upon which to apply the request.</p>
     1355               <div id="rfc.figure.u.34"></div><pre class="inline"><span id="rfc.iref.g.49"></span>  <a href="#request-target" class="smpl">request-target</a> = "*"
    13071356                 / <a href="#uri" class="smpl">absolute-URI</a>
    13081357                 / ( <a href="#uri" class="smpl">path-absolute</a> [ "?" <a href="#uri" class="smpl">query</a> ] )
    13091358                 / <a href="#uri" class="smpl">authority</a>
    13101359</pre><p id="rfc.section.4.1.2.p.3">The four options for request-target are dependent on the nature of the request. The asterisk "*" means that the request does
    1311          not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily
    1312          apply to a resource. One example would be
    1313       </p>
    1314       <div id="rfc.figure.u.35"></div><pre class="text">  OPTIONS * HTTP/1.1
     1360                  not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily
     1361                  apply to a resource. One example would be
     1362               </p>
     1363               <div id="rfc.figure.u.35"></div><pre class="text">  OPTIONS * HTTP/1.1
    13151364</pre><p id="rfc.section.4.1.2.p.5">The absolute-URI form is <em class="bcp14">REQUIRED</em> when the request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache,
    1316          and 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
    1317          loops, a proxy <em class="bcp14">MUST</em> be able to recognize all of its server names, including any aliases, local variations, and the numeric IP address. An example
    1318          Request-Line would be:
    1319       </p>
    1320       <div id="rfc.figure.u.36"></div><pre class="text">  GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
     1365                  and 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
     1366                  loops, a proxy <em class="bcp14">MUST</em> be able to recognize all of its server names, including any aliases, local variations, and the numeric IP address. An example
     1367                  Request-Line would be:
     1368               </p>
     1369               <div id="rfc.figure.u.36"></div><pre class="text">  GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
    13211370</pre><p id="rfc.section.4.1.2.p.7">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.
    1322       </p>
    1323       <p id="rfc.section.4.1.2.p.8">The authority form is only used by the CONNECT method (<a href="p2-semantics.html#CONNECT" title="CONNECT">Section 7.9</a> of <a href="#Part2" id="rfc.xref.Part2.4"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    1324       </p>
    1325       <p id="rfc.section.4.1.2.p.9">The most common form of request-target is that used to identify a resource on an origin server or gateway. In this case the
    1326          absolute path of the URI <em class="bcp14">MUST</em> be transmitted (see <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.1</a>, path-absolute) as the request-target, and the network location of the URI (authority) <em class="bcp14">MUST</em> be transmitted in a Host header field. For example, a client wishing to retrieve the resource above directly from the origin
    1327          server would create a TCP connection to port 80 of the host "www.example.org" and send the lines:
    1328       </p>
    1329       <div id="rfc.figure.u.37"></div><pre class="text">  GET /pub/WWW/TheProject.html HTTP/1.1
     1371               </p>
     1372               <p id="rfc.section.4.1.2.p.8">The authority form is only used by the CONNECT method (<a href="p2-semantics.html#CONNECT" title="CONNECT">Section 7.9</a> of <a href="#Part2" id="rfc.xref.Part2.4"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     1373               </p>
     1374               <p id="rfc.section.4.1.2.p.9">The most common form of request-target is that used to identify a resource on an origin server or gateway. In this case the
     1375                  absolute path of the URI <em class="bcp14">MUST</em> be transmitted (see <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.1</a>, path-absolute) as the request-target, and the network location of the URI (authority) <em class="bcp14">MUST</em> be transmitted in a Host header field. For example, a client wishing to retrieve the resource above directly from the origin
     1376                  server would create a TCP connection to port 80 of the host "www.example.org" and send the lines:
     1377               </p>
     1378               <div id="rfc.figure.u.37"></div><pre class="text">  GET /pub/WWW/TheProject.html HTTP/1.1
    13301379  Host: www.example.org
    13311380</pre><p id="rfc.section.4.1.2.p.11">followed by the remainder of the Request. Note that the absolute path cannot be empty; if none is present in the original
    1332          URI, it <em class="bcp14">MUST</em> be given as "/" (the server root).
    1333       </p>
    1334       <p id="rfc.section.4.1.2.p.12">If a proxy receives a request without any path in the request-target and the method specified is capable of supporting the
    1335          asterisk form of request-target, then the last proxy on the request chain <em class="bcp14">MUST</em> forward the request with "*" as the final request-target.
    1336       </p>
    1337       <div id="rfc.figure.u.38"></div>
    1338       <p>For example, the request</p><pre class="text">  OPTIONS http://www.example.org:8001 HTTP/1.1
     1381                  URI, it <em class="bcp14">MUST</em> be given as "/" (the server root).
     1382               </p>
     1383               <p id="rfc.section.4.1.2.p.12">If a proxy receives a request without any path in the request-target and the method specified is capable of supporting the
     1384                  asterisk form of request-target, then the last proxy on the request chain <em class="bcp14">MUST</em> forward the request with "*" as the final request-target.
     1385               </p>
     1386               <div id="rfc.figure.u.38"></div>
     1387               <p>For example, the request</p><pre class="text">  OPTIONS http://www.example.org:8001 HTTP/1.1
    13391388</pre><div id="rfc.figure.u.39"></div>
    1340       <p>would be forwarded by the proxy as</p><pre class="text">  OPTIONS * HTTP/1.1
     1389               <p>would be forwarded by the proxy as</p><pre class="text">  OPTIONS * HTTP/1.1
    13411390  Host: www.example.org:8001
    1342 </pre>  <p>after connecting to port 8001 of host "www.example.org".</p>
    1343       <p id="rfc.section.4.1.2.p.15">The request-target is transmitted in the format specified in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.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.
    1344       </p>
    1345       <p id="rfc.section.4.1.2.p.16">A transparent 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
    1346          above to replace a null path-absolute with "/".
    1347       </p>
    1348       <div class="note" id="rfc.section.4.1.2.p.17">
    1349          <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
    1350             a non-reserved URI character for a reserved purpose. Implementors should be aware that some pre-HTTP/1.1 proxies have been
    1351             known to rewrite the request-target.
    1352          </p>
     1391</pre><p>after connecting to port 8001 of host "www.example.org".</p>
     1392               <p id="rfc.section.4.1.2.p.15">The request-target is transmitted in the format specified in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.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.
     1393               </p>
     1394               <p id="rfc.section.4.1.2.p.16">A transparent 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
     1395                  above to replace a null path-absolute with "/".
     1396               </p>
     1397               <div class="note" id="rfc.section.4.1.2.p.17">
     1398                  <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
     1399                     a non-reserved URI character for a reserved purpose. Implementors should be aware that some pre-HTTP/1.1 proxies have been
     1400                     known to rewrite the request-target.
     1401                  </p>
     1402               </div>
     1403               <p id="rfc.section.4.1.2.p.18">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 if the received request-target
     1404                  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.5"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     1405               </p>
     1406               <p id="rfc.section.4.1.2.p.19">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.
     1407               </p>
     1408            </div>
     1409         </div>
     1410         <div id="the.resource.identified.by.a.request">
     1411            <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>
     1412            <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
     1413               field.
     1414            </p>
     1415            <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="Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses">Appendix&nbsp;B.1.1</a> for other requirements on Host support in HTTP/1.1.)
     1416            </p>
     1417            <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
     1418               vanity host names) <em class="bcp14">MUST</em> use the following rules for determining the requested resource on an HTTP/1.1 request:
     1419            </p>
     1420            <ol>
     1421               <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.
     1422               </li>
     1423               <li>If the request-target is not an absolute-URI, and the request includes a Host header field, the host is determined by the
     1424                  Host header field value.
     1425               </li>
     1426               <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.
     1427               </li>
     1428            </ol>
     1429            <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
     1430               what exact resource is being requested.
     1431            </p>
     1432         </div>
    13531433      </div>
    1354       <p id="rfc.section.4.1.2.p.18">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 if the received request-target
    1355          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.5"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    1356       </p>
    1357       <p id="rfc.section.4.1.2.p.19">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.
    1358       </p>
    1359       <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>
    1360       <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
    1361          field.
    1362       </p>
    1363       <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="Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses">Appendix&nbsp;B.1.1</a> for other requirements on Host support in HTTP/1.1.)
    1364       </p>
    1365       <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
    1366          vanity host names) <em class="bcp14">MUST</em> use the following rules for determining the requested resource on an HTTP/1.1 request:
    1367       </p>
    1368       <ol>
    1369          <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.
    1370          </li>
    1371          <li>If the request-target is not an absolute-URI, and the request includes a Host header field, the host is determined by the
    1372             Host header field value.
    1373          </li>
    1374          <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.
    1375          </li>
    1376       </ol>
    1377       <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
    1378          what exact resource is being requested.
    1379       </p>
    1380       <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="response" href="#response">Response</a></h1>
    1381       <p id="rfc.section.5.p.1">After receiving and interpreting a request message, a server responds with an HTTP response message.</p>
    1382       <div id="rfc.figure.u.40"></div><pre class="inline"><span id="rfc.iref.g.50"></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>
     1434      <div id="response">
     1435         <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a href="#response">Response</a></h1>
     1436         <p id="rfc.section.5.p.1">After receiving and interpreting a request message, a server responds with an HTTP response message.</p>
     1437         <div id="rfc.figure.u.40"></div><pre class="inline"><span id="rfc.iref.g.50"></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>
    13831438                  *(( <a href="#general.header.fields" class="smpl">general-header</a>        ; <a href="#general.header.fields" title="General Header Fields">Section&nbsp;3.5</a>
    13841439                   / <a href="#abnf.dependencies" class="smpl">response-header</a>        ; <a href="#Part2" id="rfc.xref.Part2.6"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>, <a href="p2-semantics.html#response.header.fields" title="Response Header Fields">Section 5</a>
     
    13861441                  <a href="#core.rules" class="smpl">CRLF</a>
    13871442                  [ <a href="#message.body" class="smpl">message-body</a> ]          ; <a href="#message.body" title="Message Body">Section&nbsp;3.3</a>
    1388 </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>
    1389       <p id="rfc.section.5.1.p.1">The first line of a Response message is the Status-Line, consisting of the protocol version followed by a numeric status code
    1390          and its associated textual phrase, with each element separated by SP characters. No CR or LF is allowed except in the final
    1391          CRLF sequence.
    1392       </p>
    1393       <div id="rfc.figure.u.41"></div><pre class="inline"><span id="rfc.iref.g.51"></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>
    1394 </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>
    1395       <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
    1396          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.7"><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,
    1397          out of deference to earlier Internet application protocols that were more frequently used with interactive text clients. A
    1398          client <em class="bcp14">SHOULD</em> ignore the content of the Reason Phrase.
    1399       </p>
    1400       <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.
    1401          There are 5 values for the first digit:
    1402       </p>
    1403       <ul>
    1404          <li>1xx: Informational - Request received, continuing process</li>
    1405          <li>2xx: Success - The action was successfully received, understood, and accepted</li>
    1406          <li>3xx: Redirection - Further action must be taken in order to complete the request</li>
    1407          <li>4xx: Client Error - The request contains bad syntax or cannot be fulfilled</li>
    1408          <li>5xx: Server Error - The server failed to fulfill an apparently valid request</li>
    1409       </ul>
    1410       <div id="rfc.figure.u.42"></div><pre class="inline"><span id="rfc.iref.g.52"></span><span id="rfc.iref.g.53"></span><span id="rfc.iref.g.54"></span>  <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a>    = 3<a href="#core.rules" class="smpl">DIGIT</a>
     1443</pre><div id="status-line">
     1444            <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;<a href="#status-line">Status-Line</a></h2>
     1445            <p id="rfc.section.5.1.p.1">The first line of a Response message is the Status-Line, consisting of the protocol version followed by a numeric status code
     1446               and its associated textual phrase, with each element separated by SP characters. No CR or LF is allowed except in the final
     1447               CRLF sequence.
     1448            </p>
     1449            <div id="rfc.figure.u.41"></div><pre class="inline"><span id="rfc.iref.g.51"></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>
     1450</pre><div id="status.code.and.reason.phrase">
     1451               <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>
     1452               <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
     1453                  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.7"><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,
     1454                  out of deference to earlier Internet application protocols that were more frequently used with interactive text clients. A
     1455                  client <em class="bcp14">SHOULD</em> ignore the content of the Reason Phrase.
     1456               </p>
     1457               <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.
     1458                  There are 5 values for the first digit:
     1459               </p>
     1460               <ul>
     1461                  <li>1xx: Informational - Request received, continuing process</li>
     1462                  <li>2xx: Success - The action was successfully received, understood, and accepted</li>
     1463                  <li>3xx: Redirection - Further action must be taken in order to complete the request</li>
     1464                  <li>4xx: Client Error - The request contains bad syntax or cannot be fulfilled</li>
     1465                  <li>5xx: Server Error - The server failed to fulfill an apparently valid request</li>
     1466               </ul>
     1467               <div id="rfc.figure.u.42"></div><pre class="inline"><span id="rfc.iref.g.52"></span><span id="rfc.iref.g.53"></span><span id="rfc.iref.g.54"></span>  <a href="#status.code.and.reason.phrase" class="smpl">Status-Code</a>    = 3<a href="#core.rules" class="smpl">DIGIT</a>
    14111468  <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> )
    1412 </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>
    1413       <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>
    1414       <p id="rfc.section.6.1.p.1">HTTP applications have historically allowed three different formats for the representation of date/time stamps:</p>
    1415       <div id="rfc.figure.u.43"></div><pre class="text">  Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 1123
     1469</pre></div>
     1470         </div>
     1471      </div>
     1472      <div id="protocol.parameters">
     1473         <h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a>&nbsp;<a href="#protocol.parameters">Protocol Parameters</a></h1>
     1474         <div id="date.time.formats.full.date">
     1475            <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>
     1476            <p id="rfc.section.6.1.p.1">HTTP applications have historically allowed three different formats for the representation of date/time stamps:</p>
     1477            <div id="rfc.figure.u.43"></div><pre class="text">  Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 1123
    14161478  Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format
    14171479  Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
    14181480</pre><p id="rfc.section.6.1.p.3">The first format is preferred as an Internet standard and represents 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>. The other formats are described here only for compatibility with obsolete implementations. HTTP/1.1 clients and servers
    1419          that parse the 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. See <a href="#tolerant.applications" title="Tolerant Applications">Appendix&nbsp;A</a> for further information.
    1420       </p>
    1421       <p id="rfc.section.6.1.p.4">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
    1422          Universal Time). This is indicated in the first two formats by the inclusion of "GMT" as the three-letter abbreviation for
    1423          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.
    1424       </p>
    1425       <div id="rfc.figure.u.44"></div><pre class="inline"><span id="rfc.iref.g.55"></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>
     1481               that parse the 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. See <a href="#tolerant.applications" title="Tolerant Applications">Appendix&nbsp;A</a> for further information.
     1482            </p>
     1483            <p id="rfc.section.6.1.p.4">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
     1484               Universal Time). This is indicated in the first two formats by the inclusion of "GMT" as the three-letter abbreviation for
     1485               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.
     1486            </p>
     1487            <div id="rfc.figure.u.44"></div><pre class="inline"><span id="rfc.iref.g.55"></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>
    14261488</pre><div id="preferred.date.format">
    1427          <p id="rfc.section.6.1.p.6">                    Preferred format:</p>
    1428       </div>
    1429       <div id="rfc.figure.u.45"></div><pre class="inline"><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><span id="rfc.iref.g.66"></span><span id="rfc.iref.g.67"></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>
     1489               <p id="rfc.section.6.1.p.6">          Preferred format:</p>
     1490            </div>
     1491            <div id="rfc.figure.u.45"></div><pre class="inline"><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><span id="rfc.iref.g.66"></span><span id="rfc.iref.g.67"></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>
    14301492
    14311493  <a href="#preferred.date.format" class="smpl">day-name</a>     = %x4D.6F.6E ; "Mon", case-sensitive
     
    14631525  <a href="#preferred.date.format" class="smpl">minute</a>       = 2<a href="#core.rules" class="smpl">DIGIT</a>               
    14641526  <a href="#preferred.date.format" class="smpl">second</a>       = 2<a href="#core.rules" class="smpl">DIGIT</a>               
    1465 </pre><p id="rfc.section.6.1.p.8">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>).
    1466       </p>
    1467       <div id="obsolete.date.formats">
    1468          <p id="rfc.section.6.1.p.9">                Obsolete formats:</p>
    1469       </div>
    1470       <div id="rfc.figure.u.46"></div><pre class="inline"><span id="rfc.iref.g.68"></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>
     1527</pre><p id="rfc.section.6.1.p.8">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>).
     1528            </p>
     1529            <div id="obsolete.date.formats">
     1530               <p id="rfc.section.6.1.p.9">        Obsolete formats:</p>
     1531            </div>
     1532            <div id="rfc.figure.u.46"></div><pre class="inline"><span id="rfc.iref.g.68"></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>
    14711533</pre><div id="rfc.figure.u.47"></div><pre class="inline"><span id="rfc.iref.g.69"></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>
    14721534  <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>
     
    14831545  <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> ))
    14841546                 ; month day (e.g., Jun  2)
    1485 </pre><div class="note" id="rfc.section.6.1.p.13">
    1486          <p> <b>Note:</b> Recipients of date values are encouraged to be robust in accepting date values that may have been sent by non-HTTP applications,
    1487             as is sometimes the case when retrieving or posting messages via proxies/gateways to SMTP or NNTP.
    1488          </p>
    1489       </div>
    1490       <div class="note" id="rfc.section.6.1.p.14">
    1491          <p> <b>Note:</b> HTTP requirements for the date/time stamp format apply only to their usage within the protocol stream. Clients and servers
    1492             are not required to use these formats for user presentation, request logging, etc.
    1493          </p>
    1494       </div>
    1495       <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>
    1496       <p id="rfc.section.6.2.p.1">Transfer-coding values are used to indicate an encoding transformation that has been, can be, or may need to be applied to
    1497          an entity-body in order to ensure "safe transport" through the network. This differs from a content coding in that the transfer-coding
    1498          is a property of the message, not of the original entity.
    1499       </p>
    1500       <div id="rfc.figure.u.49"></div><pre class="inline"><span id="rfc.iref.g.71"></span><span id="rfc.iref.g.72"></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>
     1547</pre><div class="note" id="rfc.section.6.1.p.13">
     1548               <p><b>Note:</b> Recipients of date values are encouraged to be robust in accepting date values that may have been sent by non-HTTP applications,
     1549                  as is sometimes the case when retrieving or posting messages via proxies/gateways to SMTP or NNTP.
     1550               </p>
     1551            </div>
     1552            <div class="note" id="rfc.section.6.1.p.14">
     1553               <p><b>Note:</b> HTTP requirements for the date/time stamp format apply only to their usage within the protocol stream. Clients and servers
     1554                  are not required to use these formats for user presentation, request logging, etc.
     1555               </p>
     1556            </div>
     1557         </div>
     1558         <div id="transfer.codings">
     1559            <h2 id="rfc.section.6.2"><a href="#rfc.section.6.2">6.2</a>&nbsp;<a href="#transfer.codings">Transfer Codings</a></h2>
     1560            <p id="rfc.section.6.2.p.1">Transfer-coding values are used to indicate an encoding transformation that has been, can be, or may need to be applied to
     1561               an entity-body in order to ensure "safe transport" through the network. This differs from a content coding in that the transfer-coding
     1562               is a property of the message, not of the original entity.
     1563            </p>
     1564            <div id="rfc.figure.u.49"></div><pre class="inline"><span id="rfc.iref.g.71"></span><span id="rfc.iref.g.72"></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>
    15011565                          / "compress" ; <a href="#compress.coding" title="Compress Coding">Section&nbsp;6.2.2.1</a>
    15021566                          / "deflate" ; <a href="#deflate.coding" title="Deflate Coding">Section&nbsp;6.2.2.2</a>
     
    15051569  <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> )
    15061570</pre><div id="rule.parameter">
    1507          <p id="rfc.section.6.2.p.3">      Parameters are in the form of attribute/value pairs.</p>
    1508       </div>
    1509       <div id="rfc.figure.u.50"></div><pre class="inline"><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span><span id="rfc.iref.g.76"></span><span id="rfc.iref.g.77"></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>
     1571               <p id="rfc.section.6.2.p.3">   Parameters are in the form of attribute/value pairs.</p>
     1572            </div>
     1573            <div id="rfc.figure.u.50"></div><pre class="inline"><span id="rfc.iref.g.73"></span><span id="rfc.iref.g.74"></span><span id="rfc.iref.g.75"></span><span id="rfc.iref.g.76"></span><span id="rfc.iref.g.77"></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>
    15101574  <a href="#rule.parameter" class="smpl">attribute</a>               = <a href="#rule.token.separators" class="smpl">token</a>
    15111575  <a href="#rule.parameter" class="smpl">value</a>                   = <a href="#rule.token.separators" class="smpl">token</a> / <a href="#rule.quoted-string" class="smpl">quoted-string</a>
    15121576</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.4" title="Transfer-Encoding">Section&nbsp;9.7</a>).
    1513       </p>
    1514       <p id="rfc.section.6.2.p.6">Whenever a transfer-coding is applied to a message-body, the set of transfer-codings <em class="bcp14">MUST</em> include "chunked", unless the message indicates it is terminated by closing the connection. When the "chunked" transfer-coding
    1515          is used, it <em class="bcp14">MUST</em> be the last transfer-coding applied to the message-body. The "chunked" transfer-coding <em class="bcp14">MUST NOT</em> be applied more than once to a message-body. These rules allow the recipient to determine the transfer-length of the message
    1516          (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>).
    1517       </p>
    1518       <p id="rfc.section.6.2.p.7">Transfer-codings are analogous to the Content-Transfer-Encoding values of MIME, which were designed to enable safe transport
    1519          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
    1520          of message-bodies is the difficulty in determining the exact body length (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>), or the desire to encrypt data over a shared transport.
    1521       </p>
    1522       <p id="rfc.section.6.2.p.8">A server which receives an entity-body with a transfer-coding it does not understand <em class="bcp14">SHOULD</em> return 501 (Not Implemented), and close the connection. A server <em class="bcp14">MUST NOT</em> send transfer-codings to an HTTP/1.0 client.
    1523       </p>
    1524       <div id="rfc.iref.c.5"></div>
    1525       <div id="rfc.iref.c.6"></div>
    1526       <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>
    1527       <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
    1528          indicator, followed by an <em class="bcp14">OPTIONAL</em> trailer containing entity-header fields. This allows dynamically produced content to be transferred along with the information
    1529          necessary for the recipient to verify that it has received the full message.
    1530       </p>
    1531       <div id="rfc.figure.u.51"></div><pre class="inline"><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><span id="rfc.iref.g.87"></span><span id="rfc.iref.g.88"></span>  <a href="#chunked.encoding" class="smpl">Chunked-Body</a>   = *<a href="#chunked.encoding" class="smpl">chunk</a>
     1577            </p>
     1578            <p id="rfc.section.6.2.p.6">Whenever a transfer-coding is applied to a message-body, the set of transfer-codings <em class="bcp14">MUST</em> include "chunked", unless the message indicates it is terminated by closing the connection. When the "chunked" transfer-coding
     1579               is used, it <em class="bcp14">MUST</em> be the last transfer-coding applied to the message-body. The "chunked" transfer-coding <em class="bcp14">MUST NOT</em> be applied more than once to a message-body. These rules allow the recipient to determine the transfer-length of the message
     1580               (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>).
     1581            </p>
     1582            <p id="rfc.section.6.2.p.7">Transfer-codings are analogous to the Content-Transfer-Encoding values of MIME, which were designed to enable safe transport
     1583               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
     1584               of message-bodies is the difficulty in determining the exact body length (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>), or the desire to encrypt data over a shared transport.
     1585            </p>
     1586            <p id="rfc.section.6.2.p.8">A server which receives an entity-body with a transfer-coding it does not understand <em class="bcp14">SHOULD</em> return 501 (Not Implemented), and close the connection. A server <em class="bcp14">MUST NOT</em> send transfer-codings to an HTTP/1.0 client.
     1587            </p>
     1588            <div id="chunked.encoding">
     1589               <div id="rfc.iref.c.5"></div>
     1590               <div id="rfc.iref.c.6"></div>
     1591               <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>
     1592               <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
     1593                  indicator, followed by an <em class="bcp14">OPTIONAL</em> trailer containing entity-header fields. This allows dynamically produced content to be transferred along with the information
     1594                  necessary for the recipient to verify that it has received the full message.
     1595               </p>
     1596               <div id="rfc.figure.u.51"></div><pre class="inline"><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><span id="rfc.iref.g.87"></span><span id="rfc.iref.g.88"></span>  <a href="#chunked.encoding" class="smpl">Chunked-Body</a>   = *<a href="#chunked.encoding" class="smpl">chunk</a>
    15321597                   <a href="#chunked.encoding" class="smpl">last-chunk</a>
    15331598                   <a href="#chunked.encoding" class="smpl">trailer-part</a>
     
    15511616                 ; <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>
    15521617</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
    1553          by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line.
    1554       </p>
    1555       <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
    1556          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>).
    1557       </p>
    1558       <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:
    1559       </p>
    1560       <ol>
    1561          <li>the request included a TE header field that indicates "trailers" is acceptable in the transfer-coding of the response, as
    1562             described in <a href="#header.te" id="rfc.xref.header.te.2" title="TE">Section&nbsp;9.5</a>; or,
    1563          </li>
    1564          <li>the server is the origin server for the response, the trailer fields consist entirely of optional metadata, and the recipient
    1565             could use the message (in a manner acceptable to the origin server) without receiving this metadata. In other words, the origin
    1566             server is willing to accept the possibility that the trailer fields might be silently discarded along the path to the client.
    1567          </li>
    1568       </ol>
    1569       <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
    1570          forwarded to an HTTP/1.0 recipient. It avoids a situation where compliance with the protocol would have necessitated a possibly
    1571          infinite buffer on the proxy.
    1572       </p>
    1573       <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>
    1574       <div id="rfc.figure.u.52"></div><pre class="text">  length := 0
     1618                  by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line.
     1619               </p>
     1620               <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
     1621                  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>).
     1622               </p>
     1623               <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:
     1624               </p>
     1625               <ol>
     1626                  <li>the request included a TE header field that indicates "trailers" is acceptable in the transfer-coding of the response, as
     1627                     described in <a href="#header.te" id="rfc.xref.header.te.2" title="TE">Section&nbsp;9.5</a>; or,
     1628                  </li>
     1629                  <li>the server is the origin server for the response, the trailer fields consist entirely of optional metadata, and the recipient
     1630                     could use the message (in a manner acceptable to the origin server) without receiving this metadata. In other words, the origin
     1631                     server is willing to accept the possibility that the trailer fields might be silently discarded along the path to the client.
     1632                  </li>
     1633               </ol>
     1634               <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
     1635                  forwarded to an HTTP/1.0 recipient. It avoids a situation where compliance with the protocol would have necessitated a possibly
     1636                  infinite buffer on the proxy.
     1637               </p>
     1638               <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>
     1639               <div id="rfc.figure.u.52"></div><pre class="text">  length := 0
    15751640  read chunk-size, chunk-ext (if any) and CRLF
    15761641  while (chunk-size &gt; 0) {
     
    15881653  Remove "chunked" from Transfer-Encoding
    15891654</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.
    1590       </p>
    1591       <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>
    1592       <p id="rfc.section.6.2.2.p.1">The codings defined below can be used to compress the payload of a message.</p>
    1593       <div class="note" id="rfc.section.6.2.2.p.2">
    1594          <p> <b>Note:</b> Use of program names for the identification of encoding formats is not desirable and is discouraged for future encodings.
    1595             Their use here is representative of historical practice, not good design.
    1596          </p>
    1597       </div>
    1598       <div class="note" id="rfc.section.6.2.2.p.3">
    1599          <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.
    1600          </p>
    1601       </div>
    1602       <div id="rfc.iref.c.7"></div>
    1603       <div id="rfc.iref.c.8"></div>
    1604       <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>
    1605       <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
    1606          coding (LZW).
    1607       </p>
    1608       <div id="rfc.iref.d.2"></div>
    1609       <div id="rfc.iref.c.9"></div>
    1610       <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>
    1611       <p id="rfc.section.6.2.2.2.p.1">The "zlib" format is defined in <a href="#RFC1950" id="rfc.xref.RFC1950.1"><cite title="ZLIB Compressed Data Format Specification version 3.3">[RFC1950]</cite></a> in combination with 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>.
    1612       </p>
    1613       <div id="rfc.iref.g.89"></div>
    1614       <div id="rfc.iref.c.10"></div>
    1615       <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>
    1616       <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.
    1617       </p>
    1618       <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>
    1619       <p id="rfc.section.6.2.3.p.1">The HTTP Transfer Coding Registry defines the name space for the transfer coding names.</p>
    1620       <p id="rfc.section.6.2.3.p.2">Registrations <em class="bcp14">MUST</em> include the following fields:
    1621       </p>
    1622       <ul>
    1623          <li>Name</li>
    1624          <li>Description</li>
    1625          <li>Pointer to specification text</li>
    1626       </ul>
    1627       <p id="rfc.section.6.2.3.p.3">Values to be added to this name space require expert review and a specification (see "Expert Review" and "Specification Required"
    1628          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.
    1629       </p>
    1630       <p id="rfc.section.6.2.3.p.4">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;.
    1631       </p>
    1632       <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>
    1633       <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
    1634          using product tokens also allow sub-products which form a significant part of the application to be listed, separated by whitespace.
    1635          By convention, the products are listed in order of their significance for identifying the application.
    1636       </p>
    1637       <div id="rfc.figure.u.53"></div><pre class="inline"><span id="rfc.iref.g.90"></span><span id="rfc.iref.g.91"></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>]
     1655               </p>
     1656            </div>
     1657            <div id="compression.codings">
     1658               <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>
     1659               <p id="rfc.section.6.2.2.p.1">The codings defined below can be used to compress the payload of a message.</p>
     1660               <div class="note" id="rfc.section.6.2.2.p.2">
     1661                  <p><b>Note:</b> Use of program names for the identification of encoding formats is not desirable and is discouraged for future encodings.
     1662                     Their use here is representative of historical practice, not good design.
     1663                  </p>
     1664               </div>
     1665               <div class="note" id="rfc.section.6.2.2.p.3">
     1666                  <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.
     1667                  </p>
     1668               </div>
     1669               <div id="compress.coding">
     1670                  <div id="rfc.iref.c.7"></div>
     1671                  <div id="rfc.iref.c.8"></div>
     1672                  <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>
     1673                  <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
     1674                     coding (LZW).
     1675                  </p>
     1676               </div>
     1677               <div id="deflate.coding">
     1678                  <div id="rfc.iref.d.2"></div>
     1679                  <div id="rfc.iref.c.9"></div>
     1680                  <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>
     1681                  <p id="rfc.section.6.2.2.2.p.1">The "zlib" format is defined in <a href="#RFC1950" id="rfc.xref.RFC1950.1"><cite title="ZLIB Compressed Data Format Specification version 3.3">[RFC1950]</cite></a> in combination with 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>.
     1682                  </p>
     1683               </div>
     1684               <div id="gzip.coding">
     1685                  <div id="rfc.iref.g.89"></div>
     1686                  <div id="rfc.iref.c.10"></div>
     1687                  <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>
     1688                  <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.
     1689                  </p>
     1690               </div>
     1691            </div>
     1692            <div id="transfer.coding.registry">
     1693               <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>
     1694               <p id="rfc.section.6.2.3.p.1">The HTTP Transfer Coding Registry defines the name space for the transfer coding names.</p>
     1695               <p id="rfc.section.6.2.3.p.2">Registrations <em class="bcp14">MUST</em> include the following fields:
     1696               </p>
     1697               <ul>
     1698                  <li>Name</li>
     1699                  <li>Description</li>
     1700                  <li>Pointer to specification text</li>
     1701               </ul>
     1702               <p id="rfc.section.6.2.3.p.3">Values to be added to this name space require expert review and a specification (see "Expert Review" and "Specification Required"
     1703                  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.
     1704               </p>
     1705               <p id="rfc.section.6.2.3.p.4">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;.
     1706               </p>
     1707            </div>
     1708         </div>
     1709         <div id="product.tokens">
     1710            <h2 id="rfc.section.6.3"><a href="#rfc.section.6.3">6.3</a>&nbsp;<a href="#product.tokens">Product Tokens</a></h2>
     1711            <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
     1712               using product tokens also allow sub-products which form a significant part of the application to be listed, separated by whitespace.
     1713               By convention, the products are listed in order of their significance for identifying the application.
     1714            </p>
     1715            <div id="rfc.figure.u.53"></div><pre class="inline"><span id="rfc.iref.g.90"></span><span id="rfc.iref.g.91"></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>]
    16381716  <a href="#product.tokens" class="smpl">product-version</a> = <a href="#rule.token.separators" class="smpl">token</a>
    16391717</pre><p id="rfc.section.6.3.p.3">Examples:</p>
    1640       <div id="rfc.figure.u.54"></div><pre class="text">  User-Agent: CERN-LineMode/2.15 libwww/2.17b3
     1718            <div id="rfc.figure.u.54"></div><pre class="text">  User-Agent: CERN-LineMode/2.15 libwww/2.17b3
    16411719  Server: Apache/0.8.4
    16421720</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 character <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).
    1643       </p>
    1644       <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>
    1645       <p id="rfc.section.6.4.p.1">Both transfer codings (TE request header, <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 4</a> of <a href="#Part3" id="rfc.xref.Part3.7"><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
    1646          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
    1647          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.
    1648       </p>
    1649       <div id="rfc.figure.u.55"></div><pre class="inline"><span id="rfc.iref.g.92"></span>  <a href="#quality.values" class="smpl">qvalue</a>         = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] )
     1721            </p>
     1722         </div>
     1723         <div id="quality.values">
     1724            <h2 id="rfc.section.6.4"><a href="#rfc.section.6.4">6.4</a>&nbsp;<a href="#quality.values">Quality Values</a></h2>
     1725            <p id="rfc.section.6.4.p.1">Both transfer codings (TE request header, <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 4</a> of <a href="#Part3" id="rfc.xref.Part3.7"><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
     1726               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
     1727               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.
     1728            </p>
     1729            <div id="rfc.figure.u.55"></div><pre class="inline"><span id="rfc.iref.g.92"></span>  <a href="#quality.values" class="smpl">qvalue</a>         = ( "0" [ "." 0*3<a href="#core.rules" class="smpl">DIGIT</a> ] )
    16501730                 / ( "1" [ "." 0*3("0") ] )
    1651 </pre><div class="note" id="rfc.section.6.4.p.3">
    1652          <p> <b>Note:</b> "Quality values" is a misnomer, since these values merely represent relative degradation in desired quality.
    1653          </p>
     1731</pre><div class="note" id="rfc.section.6.4.p.3">
     1732               <p><b>Note:</b> "Quality values" is a misnomer, since these values merely represent relative degradation in desired quality.
     1733               </p>
     1734            </div>
     1735         </div>
    16541736      </div>
    1655       <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a>&nbsp;<a id="connections" href="#connections">Connections</a></h1>
    1656       <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>
    1657       <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>
    1658       <p id="rfc.section.7.1.1.p.1">Prior to persistent connections, a separate TCP connection was established to fetch each URL, increasing the load on HTTP
    1659          servers and causing congestion on the Internet. The use of inline images and other associated data often requires a client
    1660          to make multiple requests of the same server in a short amount of time. Analysis of these performance problems and results
    1661          from a 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>.
    1662       </p>
    1663       <p id="rfc.section.7.1.1.p.2">Persistent HTTP connections have a number of advantages: </p>
    1664       <ul>
    1665          <li>By opening and closing fewer TCP connections, CPU time is saved in routers and hosts (clients, servers, proxies, gateways,
    1666             tunnels, or caches), and memory used for TCP protocol control blocks can be saved in hosts.
    1667          </li>
    1668          <li>HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without
    1669             waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time.
    1670          </li>
    1671          <li>Network congestion is reduced by reducing the number of packets caused by TCP opens, and by allowing TCP sufficient time to
    1672             determine the congestion state of the network.
    1673          </li>
    1674          <li>Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake.</li>
    1675          <li>HTTP can evolve more gracefully, since errors can be reported without the penalty of closing the TCP connection. Clients using
    1676             future versions of HTTP might optimistically try a new feature, but if communicating with an older server, retry with old
    1677             semantics after an error is reported.
    1678          </li>
    1679       </ul>
    1680       <p id="rfc.section.7.1.1.p.3">HTTP implementations <em class="bcp14">SHOULD</em> implement persistent connections.
    1681       </p>
    1682       <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>
    1683       <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
    1684          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.
    1685       </p>
    1686       <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
    1687          takes place using the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.2" 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.
    1688       </p>
    1689       <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>
    1690       <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 including the connection-token
    1691          "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 including the connection-token "close".
    1692       </p>
    1693       <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
    1694          a Connection header with the connection-token close. In case the client does not want to maintain a connection for more than
    1695          that request, it <em class="bcp14">SHOULD</em> send a Connection header including the connection-token close.
    1696       </p>
    1697       <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, that request becomes the last one for the
    1698          connection.
    1699       </p>
    1700       <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="Compatibility with HTTP/1.0 Persistent Connections">Appendix&nbsp;B.2</a> for more information on backward compatibility with HTTP/1.0 clients.
    1701       </p>
    1702       <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.length" title="Message Length">Section&nbsp;3.4</a>.
    1703       </p>
    1704       <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>
    1705       <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.
    1706       </p>
    1707       <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.
    1708       </p>
    1709       <p id="rfc.section.7.1.2.2.p.3">Clients <em class="bcp14">SHOULD NOT</em> pipeline requests using non-idempotent methods or non-idempotent sequences of 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.8"><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
    1710          send a non-idempotent request <em class="bcp14">SHOULD</em> wait to send that request until it has received the response status for the previous request.
    1711       </p>
    1712       <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>
    1713       <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.3" title="Connection">Section&nbsp;9.1</a>.
    1714       </p>
    1715       <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
    1716          to. Each persistent connection applies to only one transport link.
    1717       </p>
    1718       <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.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> for information and discussion of the problems with the Keep-Alive header implemented by many HTTP/1.0 clients).
    1719       </p>
    1720       <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.headers" href="#end-to-end.and.hop-by-hop.headers">End-to-end and Hop-by-hop Headers</a></h4>
    1721       <p id="rfc.section.7.1.3.1.p.1"> <span class="comment" id="TODO-end-to-end">[<a href="#TODO-end-to-end" class="smpl">TODO-end-to-end</a>: Restored from &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.1">http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.1</a>&gt;. See also &lt;<a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60">http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60</a>&gt;. --jre]</span>
    1722       </p>
    1723       <p id="rfc.section.7.1.3.1.p.2">For the purpose of defining the behavior of caches and non-caching proxies, we divide HTTP headers into two categories: </p>
    1724       <ul>
    1725          <li>End-to-end headers, which are transmitted to the ultimate recipient of a request or response. End-to-end headers in responses
    1726             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.
    1727          </li>
    1728          <li>Hop-by-hop headers, which are meaningful only for a single transport-level connection, and are not stored by caches or forwarded
    1729             by proxies.
    1730          </li>
    1731       </ul>
    1732       <p id="rfc.section.7.1.3.1.p.3">The following HTTP/1.1 headers are hop-by-hop headers: </p>
    1733       <ul>
    1734          <li>Connection</li>
    1735          <li>Keep-Alive</li>
    1736          <li>Proxy-Authenticate</li>
    1737          <li>Proxy-Authorization</li>
    1738          <li>TE</li>
    1739          <li>Trailer</li>
    1740          <li>Transfer-Encoding</li>
    1741          <li>Upgrade</li>
    1742       </ul>
    1743       <p id="rfc.section.7.1.3.1.p.4">All other headers defined by HTTP/1.1 are end-to-end headers.</p>
    1744       <p id="rfc.section.7.1.3.1.p.5">Other hop-by-hop headers <em class="bcp14">MUST</em> be listed in a Connection header (<a href="#header.connection" id="rfc.xref.header.connection.4" title="Connection">Section&nbsp;9.1</a>).
    1745       </p>
    1746       <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.headers" href="#non-modifiable.headers">Non-modifiable Headers</a></h4>
    1747       <p id="rfc.section.7.1.3.2.p.1"> <span class="comment" id="TODO-non-mod-headers">[<a href="#TODO-non-mod-headers" class="smpl">TODO-non-mod-headers</a>: Restored from &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.2">http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.2</a>&gt;. See also &lt;<a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60">http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60</a>&gt;. --jre]</span>
    1748       </p>
    1749       <p id="rfc.section.7.1.3.2.p.2">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end headers. A transparent
    1750          proxy <em class="bcp14">SHOULD NOT</em> modify an end-to-end header unless the definition of that header requires or specifically allows that.
    1751       </p>
    1752       <p id="rfc.section.7.1.3.2.p.3">A transparent 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:
    1753       </p>
    1754       <ul>
    1755          <li>Content-Location</li>
    1756          <li>Content-MD5</li>
    1757          <li>ETag</li>
    1758          <li>Last-Modified</li>
    1759       </ul>
    1760       <p id="rfc.section.7.1.3.2.p.4">A transparent proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response:
    1761       </p>
    1762       <ul>
    1763          <li>Expires</li>
    1764       </ul>
    1765       <p id="rfc.section.7.1.3.2.p.5">but it <em class="bcp14">MAY</em> add any of these fields if not already present. If an Expires header is added, it <em class="bcp14">MUST</em> be given a field-value identical to that of the Date header in that response.
    1766       </p>
    1767       <p id="rfc.section.7.1.3.2.p.6">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:
    1768       </p>
    1769       <ul>
    1770          <li>Content-Encoding</li>
    1771          <li>Content-Range</li>
    1772          <li>Content-Type</li>
    1773       </ul>
    1774       <p id="rfc.section.7.1.3.2.p.7">A non-transparent 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.8"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
    1775       </p>
    1776       <div class="note" id="rfc.section.7.1.3.2.p.8">
    1777          <p> <b>Warning:</b> Unnecessary modification of end-to-end headers might cause authentication failures if stronger authentication mechanisms are
    1778             introduced in later versions of HTTP. Such authentication mechanisms <em class="bcp14">MAY</em> rely on the values of header fields not listed here.
    1779          </p>
     1737      <div id="connections">
     1738         <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a>&nbsp;<a href="#connections">Connections</a></h1>
     1739         <div id="persistent.connections">
     1740            <h2 id="rfc.section.7.1"><a href="#rfc.section.7.1">7.1</a>&nbsp;<a href="#persistent.connections">Persistent Connections</a></h2>
     1741            <div id="persistent.purpose">
     1742               <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>
     1743               <p id="rfc.section.7.1.1.p.1">Prior to persistent connections, a separate TCP connection was established to fetch each URL, increasing the load on HTTP
     1744                  servers and causing congestion on the Internet. The use of inline images and other associated data often requires a client
     1745                  to make multiple requests of the same server in a short amount of time. Analysis of these performance problems and results
     1746                  from a 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>.
     1747               </p>
     1748               <p id="rfc.section.7.1.1.p.2">Persistent HTTP connections have a number of advantages: </p>
     1749               <ul>
     1750                  <li>By opening and closing fewer TCP connections, CPU time is saved in routers and hosts (clients, servers, proxies, gateways,
     1751                     tunnels, or caches), and memory used for TCP protocol control blocks can be saved in hosts.
     1752                  </li>
     1753                  <li>HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without
     1754                     waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time.
     1755                  </li>
     1756                  <li>Network congestion is reduced by reducing the number of packets caused by TCP opens, and by allowing TCP sufficient time to
     1757                     determine the congestion state of the network.
     1758                  </li>
     1759                  <li>Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake.</li>
     1760                  <li>HTTP can evolve more gracefully, since errors can be reported without the penalty of closing the TCP connection. Clients using
     1761                     future versions of HTTP might optimistically try a new feature, but if communicating with an older server, retry with old
     1762                     semantics after an error is reported.
     1763                  </li>
     1764               </ul>
     1765               <p id="rfc.section.7.1.1.p.3">HTTP implementations <em class="bcp14">SHOULD</em> implement persistent connections.
     1766               </p>
     1767            </div>
     1768            <div id="persistent.overall">
     1769               <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>
     1770               <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
     1771                  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.
     1772               </p>
     1773               <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
     1774                  takes place using the Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.2" 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.
     1775               </p>
     1776               <div id="persistent.negotiation">
     1777                  <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>
     1778                  <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 including the connection-token
     1779                     "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 including the connection-token "close".
     1780                  </p>
     1781                  <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
     1782                     a Connection header with the connection-token close. In case the client does not want to maintain a connection for more than
     1783                     that request, it <em class="bcp14">SHOULD</em> send a Connection header including the connection-token close.
     1784                  </p>
     1785                  <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, that request becomes the last one for the
     1786                     connection.
     1787                  </p>
     1788                  <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="Compatibility with HTTP/1.0 Persistent Connections">Appendix&nbsp;B.2</a> for more information on backward compatibility with HTTP/1.0 clients.
     1789                  </p>
     1790                  <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.length" title="Message Length">Section&nbsp;3.4</a>.
     1791                  </p>
     1792               </div>
     1793               <div id="pipelining">
     1794                  <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>
     1795                  <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.
     1796                  </p>
     1797                  <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.
     1798                  </p>
     1799                  <p id="rfc.section.7.1.2.2.p.3">Clients <em class="bcp14">SHOULD NOT</em> pipeline requests using non-idempotent methods or non-idempotent sequences of 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.8"><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
     1800                     send a non-idempotent request <em class="bcp14">SHOULD</em> wait to send that request until it has received the response status for the previous request.
     1801                  </p>
     1802               </div>
     1803            </div>
     1804            <div id="persistent.proxy">
     1805               <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>
     1806               <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.3" title="Connection">Section&nbsp;9.1</a>.
     1807               </p>
     1808               <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
     1809                  to. Each persistent connection applies to only one transport link.
     1810               </p>
     1811               <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.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> for information and discussion of the problems with the Keep-Alive header implemented by many HTTP/1.0 clients).
     1812               </p>
     1813               <div id="end-to-end.and.hop-by-hop.headers">
     1814                  <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.headers">End-to-end and Hop-by-hop Headers</a></h4>
     1815                  <p id="rfc.section.7.1.3.1.p.1"><span class="comment" id="TODO-end-to-end">[<a href="#TODO-end-to-end" class="smpl">TODO-end-to-end</a>: Restored from &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.1">http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.1</a>&gt;. See also &lt;<a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60">http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60</a>&gt;. --jre]</span>
     1816                  </p>
     1817                  <p id="rfc.section.7.1.3.1.p.2">For the purpose of defining the behavior of caches and non-caching proxies, we divide HTTP headers into two categories: </p>
     1818                  <ul>
     1819                     <li>End-to-end headers, which are transmitted to the ultimate recipient of a request or response. End-to-end headers in responses
     1820                        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.
     1821                     </li>
     1822                     <li>Hop-by-hop headers, which are meaningful only for a single transport-level connection, and are not stored by caches or forwarded
     1823                        by proxies.
     1824                     </li>
     1825                  </ul>
     1826                  <p id="rfc.section.7.1.3.1.p.3">The following HTTP/1.1 headers are hop-by-hop headers: </p>
     1827                  <ul>
     1828                     <li>Connection</li>
     1829                     <li>Keep-Alive</li>
     1830                     <li>Proxy-Authenticate</li>
     1831                     <li>Proxy-Authorization</li>
     1832                     <li>TE</li>
     1833                     <li>Trailer</li>
     1834                     <li>Transfer-Encoding</li>
     1835                     <li>Upgrade</li>
     1836                  </ul>
     1837                  <p id="rfc.section.7.1.3.1.p.4">All other headers defined by HTTP/1.1 are end-to-end headers.</p>
     1838                  <p id="rfc.section.7.1.3.1.p.5">Other hop-by-hop headers <em class="bcp14">MUST</em> be listed in a Connection header (<a href="#header.connection" id="rfc.xref.header.connection.4" title="Connection">Section&nbsp;9.1</a>).
     1839                  </p>
     1840               </div>
     1841               <div id="non-modifiable.headers">
     1842                  <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.headers">Non-modifiable Headers</a></h4>
     1843                  <p id="rfc.section.7.1.3.2.p.1"><span class="comment" id="TODO-non-mod-headers">[<a href="#TODO-non-mod-headers" class="smpl">TODO-non-mod-headers</a>: Restored from &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.2">http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-05#section-7.2</a>&gt;. See also &lt;<a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60">http://trac.tools.ietf.org/wg/httpbis/trac/ticket/60</a>&gt;. --jre]</span>
     1844                  </p>
     1845                  <p id="rfc.section.7.1.3.2.p.2">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end headers. A transparent
     1846                     proxy <em class="bcp14">SHOULD NOT</em> modify an end-to-end header unless the definition of that header requires or specifically allows that.
     1847                  </p>
     1848                  <p id="rfc.section.7.1.3.2.p.3">A transparent 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:
     1849                  </p>
     1850                  <ul>
     1851                     <li>Content-Location</li>
     1852                     <li>Content-MD5</li>
     1853                     <li>ETag</li>
     1854                     <li>Last-Modified</li>
     1855                  </ul>
     1856                  <p id="rfc.section.7.1.3.2.p.4">A transparent proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response:
     1857                  </p>
     1858                  <ul>
     1859                     <li>Expires</li>
     1860                  </ul>
     1861                  <p id="rfc.section.7.1.3.2.p.5">but it <em class="bcp14">MAY</em> add any of these fields if not already present. If an Expires header is added, it <em class="bcp14">MUST</em> be given a field-value identical to that of the Date header in that response.
     1862                  </p>
     1863                  <p id="rfc.section.7.1.3.2.p.6">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:
     1864                  </p>
     1865                  <ul>
     1866                     <li>Content-Encoding</li>
     1867                     <li>Content-Range</li>
     1868                     <li>Content-Type</li>
     1869                  </ul>
     1870                  <p id="rfc.section.7.1.3.2.p.7">A non-transparent 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.8"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).
     1871                  </p>
     1872                  <div class="note" id="rfc.section.7.1.3.2.p.8">
     1873                     <p><b>Warning:</b> Unnecessary modification of end-to-end headers might cause authentication failures if stronger authentication mechanisms are
     1874                        introduced in later versions of HTTP. Such authentication mechanisms <em class="bcp14">MAY</em> rely on the values of header fields not listed here.
     1875                     </p>
     1876                  </div>
     1877                  <p id="rfc.section.7.1.3.2.p.9">The Content-Length field of a request or response is added or deleted according to the rules in <a href="#message.length" title="Message Length">Section&nbsp;3.4</a>. A transparent proxy <em class="bcp14">MUST</em> preserve the entity-length (<a href="p3-payload.html#entity.length" title="Entity Length">Section 3.2.2</a> of <a href="#Part3" id="rfc.xref.Part3.8"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) of the entity-body, although it <em class="bcp14">MAY</em> change the transfer-length (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>).
     1878                  </p>
     1879               </div>
     1880            </div>
     1881            <div id="persistent.practical">
     1882               <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>
     1883               <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
     1884                  might make this a higher value since it is likely that the client will be making more connections through the same server.
     1885                  The use of persistent connections places no requirements on the length (or existence) of this time-out for either the client
     1886                  or the server.
     1887               </p>
     1888               <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
     1889                  not detect the other side's close promptly it could cause unnecessary resource drain on the network.
     1890               </p>
     1891               <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
     1892                  that the server has decided to close the "idle" connection. From the server's point of view, the connection is being closed
     1893                  while it was idle, but from the client's point of view, a request is in progress.
     1894               </p>
     1895               <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
     1896                  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.9"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Non-idempotent 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
     1897                  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.
     1898               </p>
     1899               <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.
     1900               </p>
     1901               <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).
     1902               </p>
     1903               <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
     1904                  applications. As a result, this specification does not mandate a particular maximum number of connections, but instead encourages
     1905                  clients to be conservative when opening multiple connections.
     1906               </p>
     1907               <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
     1908                  server-side processing and/or has a large payload can block subsequent requests on the same connection), each connection used
     1909                  consumes server resources (sometimes significantly), and furthermore using multiple connections can cause undesirable side
     1910                  effects in congested networks.
     1911               </p>
     1912               <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>
     1913            </div>
     1914         </div>
     1915         <div id="message.transmission.requirements">
     1916            <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>
     1917            <div id="persistent.flow">
     1918               <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>
     1919               <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
     1920                  connections with the expectation that clients will retry. The latter technique can exacerbate network congestion.
     1921               </p>
     1922            </div>
     1923            <div id="persistent.monitor">
     1924               <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>
     1925               <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 while it is transmitting the request. If the client sees an error status,
     1926                  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, the client <em class="bcp14">MUST</em> close the connection.
     1927               </p>
     1928            </div>
     1929            <div id="use.of.the.100.status">
     1930               <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>
     1931               <p id="rfc.section.7.2.3.p.1">The purpose of the 100 (Continue) status (see <a href="p2-semantics.html#status.100" title="100 Continue">Section 8.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.10"><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
     1932                  to accept the request (based on the request headers) before the client sends the request body. In some cases, it might either
     1933                  be inappropriate or highly inefficient for the client to send the body if the server will reject the message without looking
     1934                  at the body.
     1935               </p>
     1936               <p id="rfc.section.7.2.3.p.2">Requirements for HTTP/1.1 clients: </p>
     1937               <ul>
     1938                  <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 request-header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.11"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation.
     1939                  </li>
     1940                  <li>A client <em class="bcp14">MUST NOT</em> send an Expect request-header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.12"><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.
     1941                  </li>
     1942               </ul>
     1943               <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 may send "Expect:
     1944                  100-continue" without receiving either a 417 (Expectation Failed) status or a 100 (Continue) status. Therefore, when a client
     1945                  sends this header field to an origin server (possibly via a proxy) from which it has never seen a 100 (Continue) status, the
     1946                  client <em class="bcp14">SHOULD NOT</em> wait for an indefinite period before sending the request body.
     1947               </p>
     1948               <p id="rfc.section.7.2.3.p.4">Requirements for HTTP/1.1 origin servers: </p>
     1949               <ul>
     1950                  <li>Upon receiving a request which includes an Expect request-header field with the "100-continue" expectation, an origin server <em class="bcp14">MUST</em> either respond with 100 (Continue) status and continue to read from the input stream, or respond with a final status code.
     1951                     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 requested method if it returns a final status code.
     1952                  </li>
     1953                  <li>An origin server <em class="bcp14">SHOULD NOT</em> send a 100 (Continue) response if the request message does not include an Expect request-header field with the "100-continue"
     1954                     expectation, 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
     1955                     rule: for compatibility with <a href="#RFC2068" id="rfc.xref.RFC2068.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, a server <em class="bcp14">MAY</em> send a 100 (Continue) status in response to an HTTP/1.1 PUT or POST request that does not include an Expect request-header
     1956                     field with the "100-continue" expectation. This exception, the purpose of which is to minimize any client processing delays
     1957                     associated with an undeclared wait for 100 (Continue) status, applies only to HTTP/1.1 requests, and not to requests with
     1958                     any other HTTP-version value.
     1959                  </li>
     1960                  <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.
     1961                  </li>
     1962                  <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
     1963                     prematurely.
     1964                  </li>
     1965                  <li>If an origin server receives a request that does not include an Expect request-header field with the "100-continue" expectation,
     1966                     the request includes a request body, and the server responds with a final status code before reading the entire request body
     1967                     from 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,
     1968                     the client might not reliably receive the response message. However, this requirement is not be construed as preventing a
     1969                     server from defending itself against denial-of-service attacks, or from badly broken client implementations.
     1970                  </li>
     1971               </ul>
     1972               <p id="rfc.section.7.2.3.p.5">Requirements for HTTP/1.1 proxies: </p>
     1973               <ul>
     1974                  <li>If a proxy receives a request that includes an Expect request-header field with the "100-continue" expectation, and the proxy
     1975                     either knows that the next-hop server complies with HTTP/1.1 or higher, or does not know the HTTP version of the next-hop
     1976                     server, it <em class="bcp14">MUST</em> forward the request, including the Expect header field.
     1977                  </li>
     1978                  <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.
     1979                  </li>
     1980                  <li>Proxies <em class="bcp14">SHOULD</em> maintain a cache recording the HTTP version numbers received from recently-referenced next-hop servers.
     1981                  </li>
     1982                  <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
     1983                     an Expect request-header field with the "100-continue" expectation. This requirement overrides the general rule for forwarding
     1984                     of 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.13"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
     1985                  </li>
     1986               </ul>
     1987            </div>
     1988            <div id="connection.premature">
     1989               <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>
     1990               <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 request-header field
     1991                  with the "100-continue" expectation, and if the client is not directly connected to an HTTP/1.1 origin server, and if the
     1992                  client sees the connection close before receiving any status 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:
     1993               </p>
     1994               <ol>
     1995                  <li>Initiate a new connection to the server</li>
     1996                  <li>Transmit the request-headers</li>
     1997                  <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),
     1998                     or to a constant value of 5 seconds if the round-trip time is not available.
     1999                  </li>
     2000                  <li>Compute T = R * (2**N), where N is the number of previous retries of this request.</li>
     2001                  <li>Wait either for an error response from the server, or for T seconds (whichever comes first)</li>
     2002                  <li>If no error response is received, after T seconds transmit the body of the request.</li>
     2003                  <li>If client sees that the connection is closed prematurely, repeat from step 1 until the request is accepted, an error response
     2004                     is received, or the user becomes impatient and terminates the retry process.
     2005                  </li>
     2006               </ol>
     2007               <p id="rfc.section.7.2.4.p.2">If at any point an error status is received, the client </p>
     2008               <ul>
     2009                  <li><em class="bcp14">SHOULD NOT</em> continue and
     2010                  </li>
     2011                  <li><em class="bcp14">SHOULD</em> close the connection if it has not completed sending the request message.
     2012                  </li>
     2013               </ul>
     2014            </div>
     2015         </div>
    17802016      </div>
    1781       <p id="rfc.section.7.1.3.2.p.9">The Content-Length field of a request or response is added or deleted according to the rules in <a href="#message.length" title="Message Length">Section&nbsp;3.4</a>. A transparent proxy <em class="bcp14">MUST</em> preserve the entity-length (<a href="p3-payload.html#entity.length" title="Entity Length">Section 3.2.2</a> of <a href="#Part3" id="rfc.xref.Part3.8"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>) of the entity-body, although it <em class="bcp14">MAY</em> change the transfer-length (<a href="#message.length" title="Message Length">Section&nbsp;3.4</a>).
    1782       </p>
    1783       <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>
    1784       <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
    1785          might make this a higher value since it is likely that the client will be making more connections through the same server.
    1786          The use of persistent connections places no requirements on the length (or existence) of this time-out for either the client
    1787          or the server.
    1788       </p>
    1789       <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
    1790          not detect the other side's close promptly it could cause unnecessary resource drain on the network.
    1791       </p>
    1792       <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
    1793          that the server has decided to close the "idle" connection. From the server's point of view, the connection is being closed
    1794          while it was idle, but from the client's point of view, a request is in progress.
    1795       </p>
    1796       <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
    1797          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.9"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>). Non-idempotent 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
    1798          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.
    1799       </p>
    1800       <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.
    1801       </p>
    1802       <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).
    1803       </p>
    1804       <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
    1805          applications. As a result, this specification does not mandate a particular maximum number of connections, but instead encourages
    1806          clients to be conservative when opening multiple connections.
    1807       </p>
    1808       <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
    1809          server-side processing and/or has a large payload can block subsequent requests on the same connection), each connection used
    1810          consumes server resources (sometimes significantly), and furthermore using multiple connections can cause undesirable side
    1811          effects in congested networks.
    1812       </p>
    1813       <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>
    1814       <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>
    1815       <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>
    1816       <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
    1817          connections with the expectation that clients will retry. The latter technique can exacerbate network congestion.
    1818       </p>
    1819       <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>
    1820       <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 while it is transmitting the request. If the client sees an error status,
    1821          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, the client <em class="bcp14">MUST</em> close the connection.
    1822       </p>
    1823       <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>
    1824       <p id="rfc.section.7.2.3.p.1">The purpose of the 100 (Continue) status (see <a href="p2-semantics.html#status.100" title="100 Continue">Section 8.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.10"><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
    1825          to accept the request (based on the request headers) before the client sends the request body. In some cases, it might either
    1826          be inappropriate or highly inefficient for the client to send the body if the server will reject the message without looking
    1827          at the body.
    1828       </p>
    1829       <p id="rfc.section.7.2.3.p.2">Requirements for HTTP/1.1 clients: </p>
    1830       <ul>
    1831          <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 request-header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.11"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) with the "100-continue" expectation.
    1832          </li>
    1833          <li>A client <em class="bcp14">MUST NOT</em> send an Expect request-header field (<a href="p2-semantics.html#header.expect" title="Expect">Section 9.2</a> of <a href="#Part2" id="rfc.xref.Part2.12"><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.
    1834          </li>
    1835       </ul>
    1836       <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 may send "Expect:
    1837          100-continue" without receiving either a 417 (Expectation Failed) status or a 100 (Continue) status. Therefore, when a client
    1838          sends this header field to an origin server (possibly via a proxy) from which it has never seen a 100 (Continue) status, the
    1839          client <em class="bcp14">SHOULD NOT</em> wait for an indefinite period before sending the request body.
    1840       </p>
    1841       <p id="rfc.section.7.2.3.p.4">Requirements for HTTP/1.1 origin servers: </p>
    1842       <ul>
    1843          <li>Upon receiving a request which includes an Expect request-header field with the "100-continue" expectation, an origin server <em class="bcp14">MUST</em> either respond with 100 (Continue) status and continue to read from the input stream, or respond with a final status code.
    1844             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 requested method if it returns a final status code.
    1845          </li>
    1846          <li>An origin server <em class="bcp14">SHOULD NOT</em> send a 100 (Continue) response if the request message does not include an Expect request-header field with the "100-continue"
    1847             expectation, 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
    1848             rule: for compatibility with <a href="#RFC2068" id="rfc.xref.RFC2068.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, a server <em class="bcp14">MAY</em> send a 100 (Continue) status in response to an HTTP/1.1 PUT or POST request that does not include an Expect request-header
    1849             field with the "100-continue" expectation. This exception, the purpose of which is to minimize any client processing delays
    1850             associated with an undeclared wait for 100 (Continue) status, applies only to HTTP/1.1 requests, and not to requests with
    1851             any other HTTP-version value.
    1852          </li>
    1853          <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.
    1854          </li>
    1855          <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
    1856             prematurely.
    1857          </li>
    1858          <li>If an origin server receives a request that does not include an Expect request-header field with the "100-continue" expectation,
    1859             the request includes a request body, and the server responds with a final status code before reading the entire request body
    1860             from 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,
    1861             the client might not reliably receive the response message. However, this requirement is not be construed as preventing a
    1862             server from defending itself against denial-of-service attacks, or from badly broken client implementations.
    1863          </li>
    1864       </ul>
    1865       <p id="rfc.section.7.2.3.p.5">Requirements for HTTP/1.1 proxies: </p>
    1866       <ul>
    1867          <li>If a proxy receives a request that includes an Expect request-header field with the "100-continue" expectation, and the proxy
    1868             either knows that the next-hop server complies with HTTP/1.1 or higher, or does not know the HTTP version of the next-hop
    1869             server, it <em class="bcp14">MUST</em> forward the request, including the Expect header field.
    1870          </li>
    1871          <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.
    1872          </li>
    1873          <li>Proxies <em class="bcp14">SHOULD</em> maintain a cache recording the HTTP version numbers received from recently-referenced next-hop servers.
    1874          </li>
    1875          <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
    1876             an Expect request-header field with the "100-continue" expectation. This requirement overrides the general rule for forwarding
    1877             of 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.13"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>).
    1878          </li>
    1879       </ul>
    1880       <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>
    1881       <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 request-header field
    1882          with the "100-continue" expectation, and if the client is not directly connected to an HTTP/1.1 origin server, and if the
    1883          client sees the connection close before receiving any status 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:
    1884       </p>
    1885       <ol>
    1886          <li>Initiate a new connection to the server</li>
    1887          <li>Transmit the request-headers</li>
    1888          <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),
    1889             or to a constant value of 5 seconds if the round-trip time is not available.
    1890          </li>
    1891          <li>Compute T = R * (2**N), where N is the number of previous retries of this request.</li>
    1892          <li>Wait either for an error response from the server, or for T seconds (whichever comes first)</li>
    1893          <li>If no error response is received, after T seconds transmit the body of the request.</li>
    1894          <li>If client sees that the connection is closed prematurely, repeat from step 1 until the request is accepted, an error response
    1895             is received, or the user becomes impatient and terminates the retry process.
    1896          </li>
    1897       </ol>
    1898       <p id="rfc.section.7.2.4.p.2">If at any point an error status is received, the client </p>
    1899       <ul>
    1900          <li><em class="bcp14">SHOULD NOT</em> continue and
    1901          </li>
    1902          <li><em class="bcp14">SHOULD</em> close the connection if it has not completed sending the request message.
    1903          </li>
    1904       </ul>
    1905       <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a id="misc" href="#misc">Miscellaneous notes that may disappear</a></h1>
    1906       <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>
    1907       <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>
    1908       </p>
    1909       <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>
    1910       <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>
    1911       </p>
    1912       <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>
    1913       <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>
    1914       </p>
    1915       <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>
    1916       <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>
    1917       </p>
    1918       <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>
    1919       <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>
    1920       </p>
    1921       <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>
    1922       <p id="rfc.section.9.p.1">This section defines the syntax and semantics of HTTP/1.1 header fields related to message framing and transport protocols.</p>
    1923       <p id="rfc.section.9.p.2">For entity-header fields, both sender and recipient refer to either the client or the server, depending on who sends and who
    1924          receives the entity.
    1925       </p>
    1926       <div id="rfc.iref.c.11"></div>
    1927       <div id="rfc.iref.h.6"></div>
    1928       <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>
    1929       <p id="rfc.section.9.1.p.1">The "Connection" general-header field allows the sender to specify options that are desired for that particular connection
    1930          and <em class="bcp14">MUST NOT</em> be communicated by proxies over further connections.
    1931       </p>
    1932       <p id="rfc.section.9.1.p.2">The Connection header's value has the following grammar:</p>
    1933       <div id="rfc.figure.u.56"></div><pre class="inline"><span id="rfc.iref.g.93"></span><span id="rfc.iref.g.94"></span><span id="rfc.iref.g.95"></span>  <a href="#header.connection" class="smpl">Connection</a>       = "Connection" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.connection" class="smpl">Connection-v</a>
     2017      <div id="misc">
     2018         <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a href="#misc">Miscellaneous notes that may disappear</a></h1>
     2019         <div id="scheme.aliases">
     2020            <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>
     2021            <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>
     2022            </p>
     2023         </div>
     2024         <div id="http.proxy">
     2025            <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>
     2026            <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>
     2027            </p>
     2028         </div>
     2029         <div id="http.intercept">
     2030            <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>
     2031            <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>
     2032            </p>
     2033         </div>
     2034         <div id="http.others">
     2035            <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>
     2036            <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>
     2037            </p>
     2038         </div>
     2039         <div id="http.media">
     2040            <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>
     2041            <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>
     2042            </p>
     2043         </div>
     2044      </div>
     2045      <div id="header.field.definitions">
     2046         <h1 id="rfc.section.9"><a href="#rfc.section.9">9.</a>&nbsp;<a href="#header.field.definitions">Header Field Definitions</a></h1>
     2047         <p id="rfc.section.9.p.1">This section defines the syntax and semantics of HTTP/1.1 header fields related to message framing and transport protocols.</p>
     2048         <p id="rfc.section.9.p.2">For entity-header fields, both sender and recipient refer to either the client or the server, depending on who sends and who
     2049            receives the entity.
     2050         </p>
     2051         <div id="header.connection">
     2052            <div id="rfc.iref.c.11"></div>
     2053            <div id="rfc.iref.h.6"></div>
     2054            <h2 id="rfc.section.9.1"><a href="#rfc.section.9.1">9.1</a>&nbsp;<a href="#header.connection">Connection</a></h2>
     2055            <p id="rfc.section.9.1.p.1">The "Connection" general-header field allows the sender to specify options that are desired for that particular connection
     2056               and <em class="bcp14">MUST NOT</em> be communicated by proxies over further connections.
     2057            </p>
     2058            <p id="rfc.section.9.1.p.2">The Connection header's value has the following grammar:</p>
     2059            <div id="rfc.figure.u.56"></div><pre class="inline"><span id="rfc.iref.g.93"></span><span id="rfc.iref.g.94"></span><span id="rfc.iref.g.95"></span>  <a href="#header.connection" class="smpl">Connection</a>       = "Connection" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.connection" class="smpl">Connection-v</a>
    19342060  <a href="#header.connection" class="smpl">Connection-v</a>     = 1#<a href="#header.connection" class="smpl">connection-token</a>
    19352061  <a href="#header.connection" class="smpl">connection-token</a> = <a href="#rule.token.separators" class="smpl">token</a>
    19362062</pre><p id="rfc.section.9.1.p.4">HTTP/1.1 proxies <em class="bcp14">MUST</em> parse the Connection header field before a message is forwarded and, for each connection-token in this field, remove any header
    1937          field(s) from the message with the same name as the connection-token. Connection options are signaled by the presence of a
    1938          connection-token in the Connection header field, not by any corresponding additional header field(s), since the additional
    1939          header field may not be sent if there are no parameters associated with that connection option.
    1940       </p>
    1941       <p id="rfc.section.9.1.p.5">Message headers listed in the Connection header <em class="bcp14">MUST NOT</em> include end-to-end headers, such as Cache-Control.
    1942       </p>
    1943       <p id="rfc.section.9.1.p.6">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
    1944          of the response. For example,
    1945       </p>
    1946       <div id="rfc.figure.u.57"></div><pre class="text">  Connection: close
     2063               field(s) from the message with the same name as the connection-token. Connection options are signaled by the presence of a
     2064               connection-token in the Connection header field, not by any corresponding additional header field(s), since the additional
     2065               header field may not be sent if there are no parameters associated with that connection option.
     2066            </p>
     2067            <p id="rfc.section.9.1.p.5">Message headers listed in the Connection header <em class="bcp14">MUST NOT</em> include end-to-end headers, such as Cache-Control.
     2068            </p>
     2069            <p id="rfc.section.9.1.p.6">HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion
     2070               of the response. For example,
     2071            </p>
     2072            <div id="rfc.figure.u.57"></div><pre class="text">  Connection: close
    19472073</pre><p id="rfc.section.9.1.p.8">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.
    1948       </p>
    1949       <p id="rfc.section.9.1.p.9">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.
    1950       </p>
    1951       <p id="rfc.section.9.1.p.10">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.
    1952       </p>
    1953       <p id="rfc.section.9.1.p.11">A system receiving an HTTP/1.0 (or lower-version) message that includes a Connection header <em class="bcp14">MUST</em>, for each connection-token in this field, remove and ignore any header field(s) from the message with the same name as the
    1954          connection-token. This protects against mistaken forwarding of such header fields by pre-HTTP/1.1 proxies. See <a href="#compatibility.with.http.1.0.persistent.connections" title="Compatibility with HTTP/1.0 Persistent Connections">Appendix&nbsp;B.2</a>.
    1955       </p>
    1956       <div id="rfc.iref.c.12"></div>
    1957       <div id="rfc.iref.h.7"></div>
    1958       <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>
    1959       <p id="rfc.section.9.2.p.1">The "Content-Length" entity-header field indicates the size of the entity-body, in number of OCTETs. In the case of responses
    1960          to the HEAD method, it indicates the size of the entity-body that would have been sent had the request been a GET.
    1961       </p>
    1962       <div id="rfc.figure.u.58"></div><pre class="inline"><span id="rfc.iref.g.96"></span><span id="rfc.iref.g.97"></span>  <a href="#header.content-length" class="smpl">Content-Length</a>   = "Content-Length" ":" <a href="#rule.whitespace" class="smpl">OWS</a> 1*<a href="#header.content-length" class="smpl">Content-Length-v</a>
     2074            </p>
     2075            <p id="rfc.section.9.1.p.9">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.
     2076            </p>
     2077            <p id="rfc.section.9.1.p.10">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.
     2078            </p>
     2079            <p id="rfc.section.9.1.p.11">A system receiving an HTTP/1.0 (or lower-version) message that includes a Connection header <em class="bcp14">MUST</em>, for each connection-token in this field, remove and ignore any header field(s) from the message with the same name as the
     2080               connection-token. This protects against mistaken forwarding of such header fields by pre-HTTP/1.1 proxies. See <a href="#compatibility.with.http.1.0.persistent.connections" title="Compatibility with HTTP/1.0 Persistent Connections">Appendix&nbsp;B.2</a>.
     2081            </p>
     2082         </div>
     2083         <div id="header.content-length">
     2084            <div id="rfc.iref.c.12"></div>
     2085            <div id="rfc.iref.h.7"></div>
     2086            <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>
     2087            <p id="rfc.section.9.2.p.1">The "Content-Length" entity-header field indicates the size of the entity-body, in number of OCTETs. In the case of responses
     2088               to the HEAD method, it indicates the size of the entity-body that would have been sent had the request been a GET.
     2089            </p>
     2090            <div id="rfc.figure.u.58"></div><pre class="inline"><span id="rfc.iref.g.96"></span><span id="rfc.iref.g.97"></span>  <a href="#header.content-length" class="smpl">Content-Length</a>   = "Content-Length" ":" <a href="#rule.whitespace" class="smpl">OWS</a> 1*<a href="#header.content-length" class="smpl">Content-Length-v</a>
    19632091  <a href="#header.content-length" class="smpl">Content-Length-v</a> = 1*<a href="#core.rules" class="smpl">DIGIT</a>
    19642092</pre><p id="rfc.section.9.2.p.3">An example is</p>
    1965       <div id="rfc.figure.u.59"></div><pre class="text">  Content-Length: 3495
     2093            <div id="rfc.figure.u.59"></div><pre class="text">  Content-Length: 3495
    19662094</pre><p id="rfc.section.9.2.p.5">Applications <em class="bcp14">SHOULD</em> use this field to indicate the transfer-length of the message-body, unless this is prohibited by the rules in <a href="#message.length" title="Message Length">Section&nbsp;3.4</a>.
    1967       </p>
    1968       <p id="rfc.section.9.2.p.6">Any Content-Length greater than or equal to zero is a valid value. <a href="#message.length" title="Message Length">Section&nbsp;3.4</a> describes how to determine the length of a message-body if a Content-Length is not given.
    1969       </p>
    1970       <p id="rfc.section.9.2.p.7">Note that the meaning of this field is significantly different from the corresponding definition in MIME, where it is an optional
    1971          field used within the "message/external-body" content-type. In HTTP, it <em class="bcp14">SHOULD</em> be sent whenever the message's length can be determined prior to being transferred, unless this is prohibited by the rules
    1972          in <a href="#message.length" title="Message Length">Section&nbsp;3.4</a>.
    1973       </p>
    1974       <div id="rfc.iref.d.3"></div>
    1975       <div id="rfc.iref.h.8"></div>
    1976       <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>
    1977       <p id="rfc.section.9.3.p.1">The "Date" general-header field represents the date and time at which the message was originated, having the same semantics
    1978          as the 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.
    1979       </p>
    1980       <div id="rfc.figure.u.60"></div><pre class="inline"><span id="rfc.iref.g.98"></span><span id="rfc.iref.g.99"></span>  <a href="#header.date" class="smpl">Date</a>   = "Date" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.date" class="smpl">Date-v</a>
     2095            </p>
     2096            <p id="rfc.section.9.2.p.6">Any Content-Length greater than or equal to zero is a valid value. <a href="#message.length" title="Message Length">Section&nbsp;3.4</a> describes how to determine the length of a message-body if a Content-Length is not given.
     2097            </p>
     2098            <p id="rfc.section.9.2.p.7">Note that the meaning of this field is significantly different from the corresponding definition in MIME, where it is an optional
     2099               field used within the "message/external-body" content-type. In HTTP, it <em class="bcp14">SHOULD</em> be sent whenever the message's length can be determined prior to being transferred, unless this is prohibited by the rules
     2100               in <a href="#message.length" title="Message Length">Section&nbsp;3.4</a>.
     2101            </p>
     2102         </div>
     2103         <div id="header.date">
     2104            <div id="rfc.iref.d.3"></div>
     2105            <div id="rfc.iref.h.8"></div>
     2106            <h2 id="rfc.section.9.3"><a href="#rfc.section.9.3">9.3</a>&nbsp;<a href="#header.date">Date</a></h2>
     2107            <p id="rfc.section.9.3.p.1">The "Date" general-header field represents the date and time at which the message was originated, having the same semantics
     2108               as the 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.
     2109            </p>
     2110            <div id="rfc.figure.u.60"></div><pre class="inline"><span id="rfc.iref.g.98"></span><span id="rfc.iref.g.99"></span>  <a href="#header.date" class="smpl">Date</a>   = "Date" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.date" class="smpl">Date-v</a>
    19812111  <a href="#header.date" class="smpl">Date-v</a> = <a href="#date.time.formats.full.date" class="smpl">HTTP-date</a>
    19822112</pre><p id="rfc.section.9.3.p.3">An example is</p>
    1983       <div id="rfc.figure.u.61"></div><pre class="text">  Date: Tue, 15 Nov 1994 08:12:31 GMT
     2113            <div id="rfc.figure.u.61"></div><pre class="text">  Date: Tue, 15 Nov 1994 08:12:31 GMT
    19842114</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:
    1985       </p>
    1986       <ol>
    1987          <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.
    1988          </li>
    1989          <li>If the response status code conveys a server error, e.g., 500 (Internal Server Error) or 503 (Service Unavailable), and it
    1990             is inconvenient or impossible to generate a valid Date.
    1991          </li>
    1992          <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.
    1993          </li>
    1994       </ol>
    1995       <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 or gatewayed via a protocol which requires
    1996          a Date. An HTTP implementation without a clock <em class="bcp14">MUST NOT</em> cache responses without revalidating them on every use. An HTTP cache, especially a shared cache, <em class="bcp14">SHOULD</em> use a mechanism, such as NTP <a href="#RFC1305" id="rfc.xref.RFC1305.1"><cite title="Network Time Protocol (Version 3) Specification, Implementation">[RFC1305]</cite></a>, to synchronize its clock with a reliable external standard.
    1997       </p>
    1998       <p id="rfc.section.9.3.p.7">Clients <em class="bcp14">SHOULD</em> only send a Date header field in messages that include an entity-body, as in the case of the PUT and POST requests, and even
    1999          then it is optional. A client without a clock <em class="bcp14">MUST NOT</em> send a Date header field in a request.
    2000       </p>
    2001       <p id="rfc.section.9.3.p.8">The HTTP-date sent in a Date header <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
    2002          of generating a reasonably accurate date and time. In theory, the date ought to represent the moment just before the entity
    2003          is generated. In practice, the date can be generated at any time during the message origination without affecting its semantic
    2004          value.
    2005       </p>
    2006       <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>
    2007       <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
    2008          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"
    2009          of responses without storing separate Expires values for each resource).
    2010       </p>
    2011       <div id="rfc.iref.h.9"></div>
    2012       <div id="rfc.iref.h.10"></div>
    2013       <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>
    2014       <p id="rfc.section.9.4.p.1">The "Host" request-header field specifies the Internet host and port number of the resource being requested, allowing the
    2015          origin server or gateway to differentiate between internally-ambiguous URLs, such as the root "/" URL of a server for multiple
    2016          host names on a single IP address.
    2017       </p>
    2018       <p id="rfc.section.9.4.p.2">The Host field value <em class="bcp14">MUST</em> represent the naming authority of the origin server or gateway given by the original URL obtained from the user or referring
    2019          resource (generally an http URI, as described in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.1</a>).
    2020       </p>
    2021       <div id="rfc.figure.u.62"></div><pre class="inline"><span id="rfc.iref.g.100"></span><span id="rfc.iref.g.101"></span>  <a href="#header.host" class="smpl">Host</a>   = "Host" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.host" class="smpl">Host-v</a>
     2115            </p>
     2116            <ol>
     2117               <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.
     2118               </li>
     2119               <li>If the response status code conveys a server error, e.g., 500 (Internal Server Error) or 503 (Service Unavailable), and it
     2120                  is inconvenient or impossible to generate a valid Date.
     2121               </li>
     2122               <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.
     2123               </li>
     2124            </ol>
     2125            <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 or gatewayed via a protocol which requires
     2126               a Date. An HTTP implementation without a clock <em class="bcp14">MUST NOT</em> cache responses without revalidating them on every use. An HTTP cache, especially a shared cache, <em class="bcp14">SHOULD</em> use a mechanism, such as NTP <a href="#RFC1305" id="rfc.xref.RFC1305.1"><cite title="Network Time Protocol (Version 3) Specification, Implementation">[RFC1305]</cite></a>, to synchronize its clock with a reliable external standard.
     2127            </p>
     2128            <p id="rfc.section.9.3.p.7">Clients <em class="bcp14">SHOULD</em> only send a Date header field in messages that include an entity-body, as in the case of the PUT and POST requests, and even
     2129               then it is optional. A client without a clock <em class="bcp14">MUST NOT</em> send a Date header field in a request.
     2130            </p>
     2131            <p id="rfc.section.9.3.p.8">The HTTP-date sent in a Date header <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
     2132               of generating a reasonably accurate date and time. In theory, the date ought to represent the moment just before the entity
     2133               is generated. In practice, the date can be generated at any time during the message origination without affecting its semantic
     2134               value.
     2135            </p>
     2136            <div id="clockless.origin.server.operation">
     2137               <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>
     2138               <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
     2139                  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"
     2140                  of responses without storing separate Expires values for each resource).
     2141               </p>
     2142            </div>
     2143         </div>
     2144         <div id="header.host">
     2145            <div id="rfc.iref.h.9"></div>
     2146            <div id="rfc.iref.h.10"></div>
     2147            <h2 id="rfc.section.9.4"><a href="#rfc.section.9.4">9.4</a>&nbsp;<a href="#header.host">Host</a></h2>
     2148            <p id="rfc.section.9.4.p.1">The "Host" request-header field specifies the Internet host and port number of the resource being requested, allowing the
     2149               origin server or gateway to differentiate between internally-ambiguous URLs, such as the root "/" URL of a server for multiple
     2150               host names on a single IP address.
     2151            </p>
     2152            <p id="rfc.section.9.4.p.2">The Host field value <em class="bcp14">MUST</em> represent the naming authority of the origin server or gateway given by the original URL obtained from the user or referring
     2153               resource (generally an http URI, as described in <a href="#http.uri" title="http URI scheme">Section&nbsp;2.6.1</a>).
     2154            </p>
     2155            <div id="rfc.figure.u.62"></div><pre class="inline"><span id="rfc.iref.g.100"></span><span id="rfc.iref.g.101"></span>  <a href="#header.host" class="smpl">Host</a>   = "Host" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.host" class="smpl">Host-v</a>
    20222156  <a href="#header.host" class="smpl">Host-v</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.6.1</a>
    20232157</pre><p id="rfc.section.9.4.p.4">A "host" without any trailing port information implies the default port for the service requested (e.g., "80" for an HTTP
    2024          URL). For example, a request on the origin server for &lt;http://www.example.org/pub/WWW/&gt; would properly include:
    2025       </p>
    2026       <div id="rfc.figure.u.63"></div><pre class="text">  GET /pub/WWW/ HTTP/1.1
     2158               URL). For example, a request on the origin server for &lt;http://www.example.org/pub/WWW/&gt; would properly include:
     2159            </p>
     2160            <div id="rfc.figure.u.63"></div><pre class="text">  GET /pub/WWW/ HTTP/1.1
    20272161  Host: www.example.org
    20282162</pre><p id="rfc.section.9.4.p.6">A client <em class="bcp14">MUST</em> include a Host header field in all HTTP/1.1 request messages. If the requested URI does not include an Internet host name
    2029          for the service being requested, then the Host header field <em class="bcp14">MUST</em> be given with an empty value. An HTTP/1.1 proxy <em class="bcp14">MUST</em> ensure that any request message it forwards does contain an appropriate Host header field that identifies the service being
    2030          requested by the proxy. All Internet-based HTTP/1.1 servers <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code to any HTTP/1.1 request message which lacks a Host header field.
    2031       </p>
    2032       <p id="rfc.section.9.4.p.7">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="Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses">B.1.1</a> for other requirements relating to Host.
    2033       </p>
    2034       <div id="rfc.iref.t.2"></div>
    2035       <div id="rfc.iref.h.11"></div>
    2036       <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>
    2037       <p id="rfc.section.9.5.p.1">The "TE" request-header field indicates what extension transfer-codings it is willing to accept in the response, and whether
    2038          or not it is willing to accept trailer fields in a chunked transfer-coding.
    2039       </p>
    2040       <p id="rfc.section.9.5.p.2">Its value may consist of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional
    2041          accept parameters (as described in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
    2042       </p>
    2043       <div id="rfc.figure.u.64"></div><pre class="inline"><span id="rfc.iref.g.102"></span><span id="rfc.iref.g.103"></span><span id="rfc.iref.g.104"></span><span id="rfc.iref.g.105"></span><span id="rfc.iref.g.106"></span>  <a href="#header.te" class="smpl">TE</a>        = "TE" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.te" class="smpl">TE-v</a>
     2163               for the service being requested, then the Host header field <em class="bcp14">MUST</em> be given with an empty value. An HTTP/1.1 proxy <em class="bcp14">MUST</em> ensure that any request message it forwards does contain an appropriate Host header field that identifies the service being
     2164               requested by the proxy. All Internet-based HTTP/1.1 servers <em class="bcp14">MUST</em> respond with a 400 (Bad Request) status code to any HTTP/1.1 request message which lacks a Host header field.
     2165            </p>
     2166            <p id="rfc.section.9.4.p.7">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="Changes to Simplify Multi-homed Web Servers and Conserve IP Addresses">B.1.1</a> for other requirements relating to Host.
     2167            </p>
     2168         </div>
     2169         <div id="header.te">
     2170            <div id="rfc.iref.t.2"></div>
     2171            <div id="rfc.iref.h.11"></div>
     2172            <h2 id="rfc.section.9.5"><a href="#rfc.section.9.5">9.5</a>&nbsp;<a href="#header.te">TE</a></h2>
     2173            <p id="rfc.section.9.5.p.1">The "TE" request-header field indicates what extension transfer-codings it is willing to accept in the response, and whether
     2174               or not it is willing to accept trailer fields in a chunked transfer-coding.
     2175            </p>
     2176            <p id="rfc.section.9.5.p.2">Its value may consist of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional
     2177               accept parameters (as described in <a href="#transfer.codings" title="Transfer Codings">Section&nbsp;6.2</a>).
     2178            </p>
     2179            <div id="rfc.figure.u.64"></div><pre class="inline"><span id="rfc.iref.g.102"></span><span id="rfc.iref.g.103"></span><span id="rfc.iref.g.104"></span><span id="rfc.iref.g.105"></span><span id="rfc.iref.g.106"></span>  <a href="#header.te" class="smpl">TE</a>        = "TE" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.te" class="smpl">TE-v</a>
    20442180  <a href="#header.te" class="smpl">TE-v</a>      = #<a href="#header.te" class="smpl">t-codings</a>
    20452181  <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> ] )
     
    20472183  <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">token</a> / <a href="#rule.quoted-string" class="smpl">quoted-string</a> ) ]
    20482184</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,
    2049          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.
    2050       </p>
    2051       <p id="rfc.section.9.5.p.5">Examples of its use are:</p>
    2052       <div id="rfc.figure.u.65"></div><pre class="text">  TE: deflate
     2185               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.
     2186            </p>
     2187            <p id="rfc.section.9.5.p.5">Examples of its use are:</p>
     2188            <div id="rfc.figure.u.65"></div><pre class="text">  TE: deflate
    20532189  TE:
    20542190  TE: trailers, deflate;q=0.5
    20552191</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.5" title="Connection">Section&nbsp;9.1</a>) whenever TE is present in an HTTP/1.1 message.
    2056       </p>
    2057       <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>
    2058       <ol>
    2059          <li>
    2060             <p>The "chunked" transfer-coding is always acceptable. If the keyword "trailers" is listed, the client indicates that it is willing
    2061                to accept trailer fields in the chunked response on behalf of itself and any downstream clients. The implication is that,
    2062                if given, the client is stating that either all downstream clients are willing to accept trailer fields in the forwarded response,
    2063                or that it will attempt to buffer the response on behalf of downstream recipients.
    2064             </p>
    2065             <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
    2066                the entire response.
    2067             </p>
    2068          </li>
    2069          <li>
    2070             <p>If the transfer-coding being tested is one of the transfer-codings listed in the TE field, then it is acceptable unless it
    2071                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.")
    2072             </p>
    2073          </li>
    2074          <li>
    2075             <p>If multiple transfer-codings are acceptable, then the acceptable transfer-coding with the highest non-zero qvalue is preferred.
    2076                The "chunked" transfer-coding always has a qvalue of 1.
    2077             </p>
    2078          </li>
    2079       </ol>
    2080       <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
    2081          is always acceptable.
    2082       </p>
    2083       <div id="rfc.iref.t.3"></div>
    2084       <div id="rfc.iref.h.12"></div>
    2085       <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>
    2086       <p id="rfc.section.9.6.p.1">The "Trailer" general-header field indicates that the given set of header fields is present in the trailer of a message encoded
    2087          with chunked transfer-coding.
    2088       </p>
    2089       <div id="rfc.figure.u.66"></div><pre class="inline"><span id="rfc.iref.g.107"></span><span id="rfc.iref.g.108"></span>  <a href="#header.trailer" class="smpl">Trailer</a>   = "Trailer" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.trailer" class="smpl">Trailer-v</a>
     2192            </p>
     2193            <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>
     2194            <ol>
     2195               <li>
     2196                  <p>The "chunked" transfer-coding is always acceptable. If the keyword "trailers" is listed, the client indicates that it is willing
     2197                     to accept trailer fields in the chunked response on behalf of itself and any downstream clients. The implication is that,
     2198                     if given, the client is stating that either all downstream clients are willing to accept trailer fields in the forwarded response,
     2199                     or that it will attempt to buffer the response on behalf of downstream recipients.
     2200                  </p>
     2201                  <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
     2202                     the entire response.
     2203                  </p>
     2204               </li>
     2205               <li>
     2206                  <p>If the transfer-coding being tested is one of the transfer-codings listed in the TE field, then it is acceptable unless it
     2207                     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.")
     2208                  </p>
     2209               </li>
     2210               <li>
     2211                  <p>If multiple transfer-codings are acceptable, then the acceptable transfer-coding with the highest non-zero qvalue is preferred.
     2212                     The "chunked" transfer-coding always has a qvalue of 1.
     2213                  </p>
     2214               </li>
     2215            </ol>
     2216            <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
     2217               is always acceptable.
     2218            </p>
     2219         </div>
     2220         <div id="header.trailer">
     2221            <div id="rfc.iref.t.3"></div>
     2222            <div id="rfc.iref.h.12"></div>
     2223            <h2 id="rfc.section.9.6"><a href="#rfc.section.9.6">9.6</a>&nbsp;<a href="#header.trailer">Trailer</a></h2>
     2224            <p id="rfc.section.9.6.p.1">The "Trailer" general-header field indicates that the given set of header fields is present in the trailer of a message encoded
     2225               with chunked transfer-coding.
     2226            </p>
     2227            <div id="rfc.figure.u.66"></div><pre class="inline"><span id="rfc.iref.g.107"></span><span id="rfc.iref.g.108"></span>  <a href="#header.trailer" class="smpl">Trailer</a>   = "Trailer" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.trailer" class="smpl">Trailer-v</a>
    20902228  <a href="#header.trailer" class="smpl">Trailer-v</a> = 1#<a href="#header.fields" class="smpl">field-name</a>
    20912229</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
    2092          to know which header fields to expect in the trailer.
    2093       </p>
    2094       <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.
    2095       </p>
    2096       <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:
    2097       </p>
    2098       <ul>
    2099          <li>Transfer-Encoding</li>
    2100          <li>Content-Length</li>
    2101          <li>Trailer</li>
    2102       </ul>
    2103       <div id="rfc.iref.t.4"></div>
    2104       <div id="rfc.iref.h.13"></div>
    2105       <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>
    2106       <p id="rfc.section.9.7.p.1">The "Transfer-Encoding" general-header field indicates what transfer-codings (if any) have been applied to the message body.
    2107          It differs 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.9"><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
    2108          are not.
    2109       </p>
    2110       <div id="rfc.figure.u.67"></div><pre class="inline"><span id="rfc.iref.g.109"></span><span id="rfc.iref.g.110"></span>  <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a>   = "Transfer-Encoding" ":" <a href="#rule.whitespace" class="smpl">OWS</a>
     2230               to know which header fields to expect in the trailer.
     2231            </p>
     2232            <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.
     2233            </p>
     2234            <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:
     2235            </p>
     2236            <ul>
     2237               <li>Transfer-Encoding</li>
     2238               <li>Content-Length</li>
     2239               <li>Trailer</li>
     2240            </ul>
     2241         </div>
     2242         <div id="header.transfer-encoding">
     2243            <div id="rfc.iref.t.4"></div>
     2244            <div id="rfc.iref.h.13"></div>
     2245            <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>
     2246            <p id="rfc.section.9.7.p.1">The "Transfer-Encoding" general-header field indicates what transfer-codings (if any) have been applied to the message body.
     2247               It differs 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.9"><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
     2248               are not.
     2249            </p>
     2250            <div id="rfc.figure.u.67"></div><pre class="inline"><span id="rfc.iref.g.109"></span><span id="rfc.iref.g.110"></span>  <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding</a>   = "Transfer-Encoding" ":" <a href="#rule.whitespace" class="smpl">OWS</a>
    21112251                        <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding-v</a>
    21122252  <a href="#header.transfer-encoding" class="smpl">Transfer-Encoding-v</a> = 1#<a href="#transfer.codings" class="smpl">transfer-coding</a>
    21132253</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:
    2114       </p>
    2115       <div id="rfc.figure.u.68"></div><pre class="text">  Transfer-Encoding: chunked
     2254            </p>
     2255            <div id="rfc.figure.u.68"></div><pre class="text">  Transfer-Encoding: chunked
    21162256</pre><p id="rfc.section.9.7.p.5">If multiple encodings have been applied to an entity, 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 entity-header fields not defined by this specification.
    2117       </p>
    2118       <p id="rfc.section.9.7.p.6">Many older HTTP/1.0 applications do not understand the Transfer-Encoding header.</p>
    2119       <div id="rfc.iref.u.5"></div>
    2120       <div id="rfc.iref.h.14"></div>
    2121       <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>
    2122       <p id="rfc.section.9.8.p.1">The "Upgrade" general-header field allows the client to specify what additional communication protocols it would like to use,
    2123          if the server chooses to switch protocols. Additionally, the server <em class="bcp14">MUST</em> use the Upgrade header field within a 101 (Switching Protocols) response to indicate which protocol(s) are being switched
    2124          to.
    2125       </p>
    2126       <div id="rfc.figure.u.69"></div><pre class="inline"><span id="rfc.iref.g.111"></span><span id="rfc.iref.g.112"></span>  <a href="#header.upgrade" class="smpl">Upgrade</a>   = "Upgrade" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.upgrade" class="smpl">Upgrade-v</a>
     2257            </p>
     2258            <p id="rfc.section.9.7.p.6">Many older HTTP/1.0 applications do not understand the Transfer-Encoding header.</p>
     2259         </div>
     2260         <div id="header.upgrade">
     2261            <div id="rfc.iref.u.5"></div>
     2262            <div id="rfc.iref.h.14"></div>
     2263            <h2 id="rfc.section.9.8"><a href="#rfc.section.9.8">9.8</a>&nbsp;<a href="#header.upgrade">Upgrade</a></h2>
     2264            <p id="rfc.section.9.8.p.1">The "Upgrade" general-header field allows the client to specify what additional communication protocols it would like to use,
     2265               if the server chooses to switch protocols. Additionally, the server <em class="bcp14">MUST</em> use the Upgrade header field within a 101 (Switching Protocols) response to indicate which protocol(s) are being switched
     2266               to.
     2267            </p>
     2268            <div id="rfc.figure.u.69"></div><pre class="inline"><span id="rfc.iref.g.111"></span><span id="rfc.iref.g.112"></span>  <a href="#header.upgrade" class="smpl">Upgrade</a>   = "Upgrade" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.upgrade" class="smpl">Upgrade-v</a>
    21272269  <a href="#header.upgrade" class="smpl">Upgrade-v</a> = 1#<a href="#product.tokens" class="smpl">product</a>
    21282270</pre><p id="rfc.section.9.8.p.3">For example,</p>
    2129       <div id="rfc.figure.u.70"></div><pre class="text">  Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
     2271            <div id="rfc.figure.u.70"></div><pre class="text">  Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
    21302272</pre><p id="rfc.section.9.8.p.5">The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible
    2131          protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP
    2132          with a higher major version number, even though the current request has been made using HTTP/1.1. This eases the difficult
    2133          transition between incompatible protocols by allowing the client to initiate a request in the more commonly supported protocol
    2134          while indicating to the server that it would like to use a "better" protocol if available (where "better" is determined by
    2135          the server, possibly according to the nature of the method and/or resource being requested).
    2136       </p>
    2137       <p id="rfc.section.9.8.p.6">The Upgrade header field only applies to switching application-layer protocols upon the existing transport-layer connection.
    2138          Upgrade cannot be used to insist on a protocol change; its acceptance and use by the server is optional. The capabilities
    2139          and nature of the application-layer communication after the protocol change is entirely dependent upon the new protocol chosen,
    2140          although the first action after changing the protocol <em class="bcp14">MUST</em> be a response to the initial HTTP request containing the Upgrade header field.
    2141       </p>
    2142       <p id="rfc.section.9.8.p.7">The Upgrade header field only applies to the immediate connection. Therefore, the upgrade keyword <em class="bcp14">MUST</em> be supplied within a Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.6" title="Connection">Section&nbsp;9.1</a>) whenever Upgrade is present in an HTTP/1.1 message.
    2143       </p>
    2144       <p id="rfc.section.9.8.p.8">The Upgrade header field cannot be used to indicate a switch to a protocol on a different connection. For that purpose, it
    2145          is more appropriate to use a 301, 302, 303, or 305 redirection response.
    2146       </p>
    2147       <p id="rfc.section.9.8.p.9">This specification only defines the protocol name "HTTP" for use by the family of Hypertext Transfer Protocols, as defined
    2148          by the HTTP version rules of <a href="#http.version" title="HTTP Version">Section&nbsp;2.5</a> and future updates to this specification. Additional tokens can be registered with IANA using the registration procedure defined
    2149          below.
    2150       </p>
    2151       <h3 id="rfc.section.9.8.1"><a href="#rfc.section.9.8.1">9.8.1</a>&nbsp;<a id="upgrade.token.registry" href="#upgrade.token.registry">Upgrade Token Registry</a></h3>
    2152       <p id="rfc.section.9.8.1.p.1">The HTTP Upgrade Token Registry defines the name space for product tokens used to identify protocols in the Upgrade header
    2153          field. Each registered token should be associated with one or a set of specifications, and with contact information.
    2154       </p>
    2155       <p id="rfc.section.9.8.1.p.2">Registrations should be allowed on a First Come First Served basis as described in <a href="http://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a> of <a href="#RFC5226" id="rfc.xref.RFC5226.2"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>. These specifications need not be IETF documents or be subject to IESG review, but should obey the following rules:
    2156       </p>
    2157       <ol>
    2158          <li>A token, once registered, stays registered forever.</li>
    2159          <li>The registration <em class="bcp14">MUST</em> name a responsible party for the registration.
    2160          </li>
    2161          <li>The registration <em class="bcp14">MUST</em> name a point of contact.
    2162          </li>
    2163          <li>The registration <em class="bcp14">MAY</em> name the documentation required for the token.
    2164          </li>
    2165          <li>The responsible party <em class="bcp14">MAY</em> change the registration at any time. The IANA will keep a record of all such changes, and make them available upon request.
    2166          </li>
    2167          <li>The responsible party for the first registration of a "product" token <em class="bcp14">MUST</em> approve later registrations of a "version" token together with that "product" token before they can be registered.
    2168          </li>
    2169          <li>If absolutely required, the IESG <em class="bcp14">MAY</em> reassign the responsibility for a token. This will normally only be used in the case when a responsible party cannot be contacted.
    2170          </li>
    2171       </ol>
    2172       <p id="rfc.section.9.8.1.p.3">It is not required that specifications for upgrade tokens be made publicly available, but the contact information for the
    2173          registration should be.
    2174       </p>
    2175       <div id="rfc.iref.v.1"></div>
    2176       <div id="rfc.iref.h.15"></div>
    2177       <h2 id="rfc.section.9.9"><a href="#rfc.section.9.9">9.9</a>&nbsp;<a id="header.via" href="#header.via">Via</a></h2>
    2178       <p id="rfc.section.9.9.p.1">The "Via" general-header field <em class="bcp14">MUST</em> be used by gateways and proxies to indicate the intermediate protocols and recipients between the user agent and the server
    2179          on requests, and between the origin server and the client on responses. It is analogous to the "Received" field defined in <a href="http://tools.ietf.org/html/rfc5322#section-3.6.7">Section 3.6.7</a> of <a href="#RFC5322" id="rfc.xref.RFC5322.5"><cite title="Internet Message Format">[RFC5322]</cite></a> and is intended to be used for tracking message forwards, avoiding request loops, and identifying the protocol capabilities
    2180          of all senders along the request/response chain.
    2181       </p>
    2182       <div id="rfc.figure.u.71"></div><pre class="inline"><span id="rfc.iref.g.113"></span><span id="rfc.iref.g.114"></span><span id="rfc.iref.g.115"></span><span id="rfc.iref.g.116"></span><span id="rfc.iref.g.117"></span><span id="rfc.iref.g.118"></span><span id="rfc.iref.g.119"></span>  <a href="#header.via" class="smpl">Via</a>               = "Via" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.via" class="smpl">Via-v</a>
     2273               protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP
     2274               with a higher major version number, even though the current request has been made using HTTP/1.1. This eases the difficult
     2275               transition between incompatible protocols by allowing the client to initiate a request in the more commonly supported protocol
     2276               while indicating to the server that it would like to use a "better" protocol if available (where "better" is determined by
     2277               the server, possibly according to the nature of the method and/or resource being requested).
     2278            </p>
     2279            <p id="rfc.section.9.8.p.6">The Upgrade header field only applies to switching application-layer protocols upon the existing transport-layer connection.
     2280               Upgrade cannot be used to insist on a protocol change; its acceptance and use by the server is optional. The capabilities
     2281               and nature of the application-layer communication after the protocol change is entirely dependent upon the new protocol chosen,
     2282               although the first action after changing the protocol <em class="bcp14">MUST</em> be a response to the initial HTTP request containing the Upgrade header field.
     2283            </p>
     2284            <p id="rfc.section.9.8.p.7">The Upgrade header field only applies to the immediate connection. Therefore, the upgrade keyword <em class="bcp14">MUST</em> be supplied within a Connection header field (<a href="#header.connection" id="rfc.xref.header.connection.6" title="Connection">Section&nbsp;9.1</a>) whenever Upgrade is present in an HTTP/1.1 message.
     2285            </p>
     2286            <p id="rfc.section.9.8.p.8">The Upgrade header field cannot be used to indicate a switch to a protocol on a different connection. For that purpose, it
     2287               is more appropriate to use a 301, 302, 303, or 305 redirection response.
     2288            </p>
     2289            <p id="rfc.section.9.8.p.9">This specification only defines the protocol name "HTTP" for use by the family of Hypertext Transfer Protocols, as defined
     2290               by the HTTP version rules of <a href="#http.version" title="HTTP Version">Section&nbsp;2.5</a> and future updates to this specification. Additional tokens can be registered with IANA using the registration procedure defined
     2291               below.
     2292            </p>
     2293            <div id="upgrade.token.registry">
     2294               <h3 id="rfc.section.9.8.1"><a href="#rfc.section.9.8.1">9.8.1</a>&nbsp;<a href="#upgrade.token.registry">Upgrade Token Registry</a></h3>
     2295               <p id="rfc.section.9.8.1.p.1">The HTTP Upgrade Token Registry defines the name space for product tokens used to identify protocols in the Upgrade header
     2296                  field. Each registered token should be associated with one or a set of specifications, and with contact information.
     2297               </p>
     2298               <p id="rfc.section.9.8.1.p.2">Registrations should be allowed on a First Come First Served basis as described in <a href="https://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a> of <a href="#RFC5226" id="rfc.xref.RFC5226.2"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>. These specifications need not be IETF documents or be subject to IESG review, but should obey the following rules:
     2299               </p>
     2300               <ol>
     2301                  <li>A token, once registered, stays registered forever.</li>
     2302                  <li>The registration <em class="bcp14">MUST</em> name a responsible party for the registration.
     2303                  </li>
     2304                  <li>The registration <em class="bcp14">MUST</em> name a point of contact.
     2305                  </li>
     2306                  <li>The registration <em class="bcp14">MAY</em> name the documentation required for the token.
     2307                  </li>
     2308                  <li>The responsible party <em class="bcp14">MAY</em> change the registration at any time. The IANA will keep a record of all such changes, and make them available upon request.
     2309                  </li>
     2310                  <li>The responsible party for the first registration of a "product" token <em class="bcp14">MUST</em> approve later registrations of a "version" token together with that "product" token before they can be registered.
     2311                  </li>
     2312                  <li>If absolutely required, the IESG <em class="bcp14">MAY</em> reassign the responsibility for a token. This will normally only be used in the case when a responsible party cannot be contacted.
     2313                  </li>
     2314               </ol>
     2315               <p id="rfc.section.9.8.1.p.3">It is not required that specifications for upgrade tokens be made publicly available, but the contact information for the
     2316                  registration should be.
     2317               </p>
     2318            </div>
     2319         </div>
     2320         <div id="header.via">
     2321            <div id="rfc.iref.v.1"></div>
     2322            <div id="rfc.iref.h.15"></div>
     2323            <h2 id="rfc.section.9.9"><a href="#rfc.section.9.9">9.9</a>&nbsp;<a href="#header.via">Via</a></h2>
     2324            <p id="rfc.section.9.9.p.1">The "Via" general-header field <em class="bcp14">MUST</em> be used by gateways and proxies to indicate the intermediate protocols and recipients between the user agent and the server
     2325               on requests, and between the origin server and the client on responses. It is analogous to the "Received" field defined in <a href="https://tools.ietf.org/html/rfc5322#section-3.6.7">Section 3.6.7</a> of <a href="#RFC5322" id="rfc.xref.RFC5322.5"><cite title="Internet Message Format">[RFC5322]</cite></a> and is intended to be used for tracking message forwards, avoiding request loops, and identifying the protocol capabilities
     2326               of all senders along the request/response chain.
     2327            </p>
     2328            <div id="rfc.figure.u.71"></div><pre class="inline"><span id="rfc.iref.g.113"></span><span id="rfc.iref.g.114"></span><span id="rfc.iref.g.115"></span><span id="rfc.iref.g.116"></span><span id="rfc.iref.g.117"></span><span id="rfc.iref.g.118"></span><span id="rfc.iref.g.119"></span>  <a href="#header.via" class="smpl">Via</a>               = "Via" ":" <a href="#rule.whitespace" class="smpl">OWS</a> <a href="#header.via" class="smpl">Via-v</a>
    21832329  <a href="#header.via" class="smpl">Via-v</a>             = 1#( <a href="#header.via" class="smpl">received-protocol</a> <a href="#rule.whitespace" class="smpl">RWS</a> <a href="#header.via" class="smpl">received-by</a>
    21842330                          [ <a href="#rule.whitespace" class="smpl">RWS</a> <a href="#rule.comment" class="smpl">comment</a> ] )
     
    21892335  <a href="#header.via" class="smpl">pseudonym</a>         = <a href="#rule.token.separators" class="smpl">token</a>
    21902336</pre><p id="rfc.section.9.9.p.3">The received-protocol indicates the protocol version of the message received by the server or client along each segment of
    2191          the request/response chain. The received-protocol version is appended to the Via field value when the message is forwarded
    2192          so that information about the protocol capabilities of upstream applications remains visible to all recipients.
    2193       </p>
    2194       <p id="rfc.section.9.9.p.4">The protocol-name is optional if and only if it would be "HTTP". The received-by field is normally the host and optional port
    2195          number of a recipient server or client that subsequently forwarded the message. However, if the real host is considered to
    2196          be sensitive information, it <em class="bcp14">MAY</em> be replaced by a pseudonym. If the port is not given, it <em class="bcp14">MAY</em> be assumed to be the default port of the received-protocol.
    2197       </p>
    2198       <p id="rfc.section.9.9.p.5">Multiple Via field values represent each proxy or gateway that has forwarded the message. Each recipient <em class="bcp14">MUST</em> append its information such that the end result is ordered according to the sequence of forwarding applications.
    2199       </p>
    2200       <p id="rfc.section.9.9.p.6">Comments <em class="bcp14">MAY</em> be used in the Via header field to identify the software of the recipient proxy or gateway, analogous to the User-Agent and
    2201          Server header fields. However, all comments in the Via field are optional and <em class="bcp14">MAY</em> be removed by any recipient prior to forwarding the message.
    2202       </p>
    2203       <p id="rfc.section.9.9.p.7">For example, a request message could be sent from an HTTP/1.0 user agent to an internal proxy code-named "fred", which uses
    2204          HTTP/1.1 to forward the request to a public proxy at p.example.net, which completes the request by forwarding it to the origin
    2205          server at www.example.com. The request received by www.example.com would then have the following Via header field:
    2206       </p>
    2207       <div id="rfc.figure.u.72"></div><pre class="text">  Via: 1.0 fred, 1.1 p.example.net (Apache/1.1)
     2337               the request/response chain. The received-protocol version is appended to the Via field value when the message is forwarded
     2338               so that information about the protocol capabilities of upstream applications remains visible to all recipients.
     2339            </p>
     2340            <p id="rfc.section.9.9.p.4">The protocol-name is optional if and only if it would be "HTTP". The received-by field is normally the host and optional port
     2341               number of a recipient server or client that subsequently forwarded the message. However, if the real host is considered to
     2342               be sensitive information, it <em class="bcp14">MAY</em> be replaced by a pseudonym. If the port is not given, it <em class="bcp14">MAY</em> be assumed to be the default port of the received-protocol.
     2343            </p>
     2344            <p id="rfc.section.9.9.p.5">Multiple Via field values represent each proxy or gateway that has forwarded the message. Each recipient <em class="bcp14">MUST</em> append its information such that the end result is ordered according to the sequence of forwarding applications.
     2345            </p>
     2346            <p id="rfc.section.9.9.p.6">Comments <em class="bcp14">MAY</em> be used in the Via header field to identify the software of the recipient proxy or gateway, analogous to the User-Agent and
     2347               Server header fields. However, all comments in the Via field are optional and <em class="bcp14">MAY</em> be removed by any recipient prior to forwarding the message.
     2348            </p>
     2349            <p id="rfc.section.9.9.p.7">For example, a request message could be sent from an HTTP/1.0 user agent to an internal proxy code-named "fred", which uses
     2350               HTTP/1.1 to forward the request to a public proxy at p.example.net, which completes the request by forwarding it to the origin
     2351               server at www.example.com. The request received by www.example.com would then have the following Via header field:
     2352            </p>
     2353            <div id="rfc.figure.u.72"></div><pre class="text">  Via: 1.0 fred, 1.1 p.example.net (Apache/1.1)
    22082354</pre><p id="rfc.section.9.9.p.9">Proxies and gateways used as a portal through a network firewall <em class="bcp14">SHOULD NOT</em>, by default, forward the names and ports of hosts within the firewall region. This information <em class="bcp14">SHOULD</em> only be propagated if explicitly enabled. If not enabled, the received-by host of any host behind the firewall <em class="bcp14">SHOULD</em> be replaced by an appropriate pseudonym for that host.
    2209       </p>
    2210       <p id="rfc.section.9.9.p.10">For organizations that have strong privacy requirements for hiding internal structures, a proxy <em class="bcp14">MAY</em> combine an ordered subsequence of Via header field entries with identical received-protocol values into a single such entry.
    2211          For example,
    2212       </p>
    2213       <div id="rfc.figure.u.73"></div><pre class="text">  Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy
     2355            </p>
     2356            <p id="rfc.section.9.9.p.10">For organizations that have strong privacy requirements for hiding internal structures, a proxy <em class="bcp14">MAY</em> combine an ordered subsequence of Via header field entries with identical received-protocol values into a single such entry.
     2357               For example,
     2358            </p>
     2359            <div id="rfc.figure.u.73"></div><pre class="text">  Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy
    22142360</pre><p id="rfc.section.9.9.p.12">could be collapsed to</p>
    2215       <div id="rfc.figure.u.74"></div><pre class="text">  Via: 1.0 ricky, 1.1 mertz, 1.0 lucy
     2361            <div id="rfc.figure.u.74"></div><pre class="text">  Via: 1.0 ricky, 1.1 mertz, 1.0 lucy
    22162362</pre><p id="rfc.section.9.9.p.14">Applications <em class="bcp14">SHOULD NOT</em> combine multiple entries unless they are all under the same organizational control and the hosts have already been replaced
    2217          by pseudonyms. Applications <em class="bcp14">MUST NOT</em> combine entries which have different received-protocol values.
    2218       </p>
    2219       <h1 id="rfc.section.10"><a href="#rfc.section.10">10.</a>&nbsp;<a id="IANA.considerations" href="#IANA.considerations">IANA Considerations</a></h1>
    2220       <h2 id="rfc.section.10.1"><a href="#rfc.section.10.1">10.1</a>&nbsp;<a id="message.header.registration" href="#message.header.registration">Message Header Registration</a></h2>
    2221       <p id="rfc.section.10.1.p.1">The Message Header Registry located at &lt;<a href="http://www.iana.org/assignments/message-headers/message-header-index.html">http://www.iana.org/assignments/message-headers/message-header-index.html</a>&gt; should be updated with the permanent registrations below (see <a href="#RFC3864" id="rfc.xref.RFC3864.1"><cite title="Registration Procedures for Message Header Fields">[RFC3864]</cite></a>):
    2222       </p>
    2223       <div id="rfc.table.1">
    2224          <div id="iana.header.registration.table"></div>
    2225          <table class="tt full left" cellpadding="3" cellspacing="0">
    2226             <thead>
    2227                <tr>
    2228                   <th>Header Field Name</th>
    2229                   <th>Protocol</th>
    2230                   <th>Status</th>
    2231                   <th>Reference</th>
    2232                </tr>
    2233             </thead>
    2234             <tbody>
    2235                <tr>
    2236                   <td class="left">Connection</td>
    2237                   <td class="left">http</td>
    2238                   <td class="left">standard</td>
    2239                   <td class="left"> <a href="#header.connection" id="rfc.xref.header.connection.7" title="Connection">Section&nbsp;9.1</a>
    2240                   </td>
    2241                </tr>
    2242                <tr>
    2243                   <td class="left">Content-Length</td>
    2244                   <td class="left">http</td>
    2245                   <td class="left">standard</td>
    2246                   <td class="left"> <a href="#header.content-length" id="rfc.xref.header.content-length.2" title="Content-Length">Section&nbsp;9.2</a>
    2247                   </td>
    2248                </tr>
    2249                <tr>
    2250                   <td class="left">Date</td>
    2251                   <td class="left">http</td>
    2252                   <td class="left">standard</td>
    2253                   <td class="left"> <a href="#header.date" id="rfc.xref.header.date.2" title="Date">Section&nbsp;9.3</a>
    2254                   </td>
    2255                </tr>
    2256                <tr>
    2257                   <td class="left">Host</td>
    2258                   <td class="left">http</td>
    2259                   <td class="left">standard</td>
    2260                   <td class="left"> <a href="#header.host" id="rfc.xref.header.host.1" title="Host">Section&nbsp;9.4</a>
    2261                   </td>
    2262                </tr>
    2263                <tr>
    2264                   <td class="left">TE</td>
    2265                   <td class="left">http</td>
    2266                   <td class="left">standard</td>
    2267                   <td class="left"> <a href="#header.te" id="rfc.xref.header.te.4" title="TE">Section&nbsp;9.5</a>
    2268                   </td>
    2269                </tr>
    2270                <tr>
    2271                   <td class="left">Trailer</td>
    2272                   <td class="left">http</td>
    2273                   <td class="left">standard</td>
    2274                   <td class="left"> <a href="#header.trailer" id="rfc.xref.header.trailer.3" title="Trailer">Section&nbsp;9.6</a>
    2275                   </td>
    2276                </tr>
    2277                <tr>
    2278                   <td class="left">Transfer-Encoding</td>
    2279                   <td class="left">http</td>
    2280                   <td class="left">standard</td>
    2281                   <td class="left"> <a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.5" title="Transfer-Encoding">Section&nbsp;9.7</a>
    2282                   </td>
    2283                </tr>
    2284                <tr>
    2285                   <td class="left">Upgrade</td>
    2286                   <td class="left">http</td>
    2287                   <td class="left">standard</td>
    2288                   <td class="left"> <a href="#header.upgrade" id="rfc.xref.header.upgrade.2" title="Upgrade">Section&nbsp;9.8</a>
    2289                   </td>
    2290                </tr>
    2291                <tr>
    2292                   <td class="left">Via</td>
    2293                   <td class="left">http</td>
    2294                   <td class="left">standard</td>
    2295                   <td class="left"> <a href="#header.via" id="rfc.xref.header.via.2" title="Via">Section&nbsp;9.9</a>
    2296                   </td>
    2297                </tr>
    2298             </tbody>
    2299          </table>
     2363               by pseudonyms. Applications <em class="bcp14">MUST NOT</em> combine entries which have different received-protocol values.
     2364            </p>
     2365         </div>
    23002366      </div>
    2301       <p id="rfc.section.10.1.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>
    2302       <h2 id="rfc.section.10.2"><a href="#rfc.section.10.2">10.2</a>&nbsp;<a id="uri.scheme.registration" href="#uri.scheme.registration">URI Scheme Registration</a></h2>
    2303       <p id="rfc.section.10.2.p.1">The entries for the "http" and "https" URI Schemes in the registry located at &lt;<a href="http://www.iana.org/assignments/uri-schemes.html">http://www.iana.org/assignments/uri-schemes.html</a>&gt; should be updated to point to Sections <a href="#http.uri" title="http URI scheme">2.6.1</a> and <a href="#https.uri" title="https URI scheme">2.6.2</a> of this document (see <a href="#RFC4395" id="rfc.xref.RFC4395.1"><cite title="Guidelines and Registration Procedures for New URI Schemes">[RFC4395]</cite></a>).
    2304       </p>
    2305       <h2 id="rfc.section.10.3"><a href="#rfc.section.10.3">10.3</a>&nbsp;<a id="internet.media.type.http" href="#internet.media.type.http">Internet Media Type Registrations</a></h2>
    2306       <p id="rfc.section.10.3.p.1">This document serves as the specification for the Internet media types "message/http" and "application/http". The following
    2307          is to be registered with IANA (see <a href="#RFC4288" id="rfc.xref.RFC4288.1"><cite title="Media Type Specifications and Registration Procedures">[RFC4288]</cite></a>).
    2308       </p>
    2309       <div id="rfc.iref.m.2"></div>
    2310       <div id="rfc.iref.m.3"></div>
    2311       <h3 id="rfc.section.10.3.1"><a href="#rfc.section.10.3.1">10.3.1</a>&nbsp;<a id="internet.media.type.message.http" href="#internet.media.type.message.http">Internet Media Type message/http</a></h3>
    2312       <p id="rfc.section.10.3.1.p.1">The message/http type can be used to enclose a single HTTP request or response message, provided that it obeys the MIME restrictions
    2313          for all "message" types regarding line length and encodings.
    2314       </p>
    2315       <p id="rfc.section.10.3.1.p.2"> </p>
    2316       <dl>
    2317          <dt>Type name:</dt>
    2318          <dd>message</dd>
    2319          <dt>Subtype name:</dt>
    2320          <dd>http</dd>
    2321          <dt>Required parameters:</dt>
    2322          <dd>none</dd>
    2323          <dt>Optional parameters:</dt>
    2324          <dd>version, msgtype
    2325             <dl>
    2326                <dt>version:</dt>
    2327                <dd>The HTTP-Version number of the enclosed message (e.g., "1.1"). If not present, the version can be determined from the first
    2328                   line of the body.
    2329                </dd>
    2330                <dt>msgtype:</dt>
    2331                <dd>The message type -- "request" or "response". If not present, the type can be determined from the first line of the body.</dd>
    2332             </dl>
    2333          </dd>
    2334          <dt>Encoding considerations:</dt>
    2335          <dd>only "7bit", "8bit", or "binary" are permitted</dd>
    2336          <dt>Security considerations:</dt>
    2337          <dd>none</dd>
    2338          <dt>Interoperability considerations:</dt>
    2339          <dd>none</dd>
    2340          <dt>Published specification:</dt>
    2341          <dd>This specification (see <a href="#internet.media.type.message.http" title="Internet Media Type message/http">Section&nbsp;10.3.1</a>).
    2342          </dd>
    2343          <dt>Applications that use this media type:</dt>
    2344          <dt>Additional information:</dt>
    2345          <dd>
    2346             <dl>
    2347                <dt>Magic number(s):</dt>
    2348                <dd>none</dd>
    2349                <dt>File extension(s):</dt>
    2350                <dd>none</dd>
    2351                <dt>Macintosh file type code(s):</dt>
    2352                <dd>none</dd>
    2353             </dl>
    2354          </dd>
    2355          <dt>Person and email address to contact for further information:</dt>
    2356          <dd>See Authors Section.</dd>
    2357          <dt>Intended usage:</dt>
    2358          <dd>COMMON</dd>
    2359          <dt>Restrictions on usage:</dt>
    2360          <dd>none</dd>
    2361          <dt>Author/Change controller:</dt>
    2362          <dd>IESG</dd>
    2363       </dl>
    2364       <div id="rfc.iref.m.4"></div>
    2365       <div id="rfc.iref.a.1"></div>
    2366       <h3 id="rfc.section.10.3.2"><a href="#rfc.section.10.3.2">10.3.2</a>&nbsp;<a id="internet.media.type.application.http" href="#internet.media.type.application.http">Internet Media Type application/http</a></h3>
    2367       <p id="rfc.section.10.3.2.p.1">The application/http type can be used to enclose a pipeline of one or more HTTP request or response messages (not intermixed).</p>
    2368       <p id="rfc.section.10.3.2.p.2"> </p>
    2369       <dl>
    2370          <dt>Type name:</dt>
    2371          <dd>application</dd>
    2372          <dt>Subtype name:</dt>
    2373          <dd>http</dd>
    2374          <dt>Required parameters:</dt>
    2375          <dd>none</dd>
    2376          <dt>Optional parameters:</dt>
    2377          <dd>version, msgtype
    2378             <dl>
    2379                <dt>version:</dt>
    2380                <dd>The HTTP-Version number of the enclosed messages (e.g., "1.1"). If not present, the version can be determined from the first
    2381                   line of the body.
    2382                </dd>
    2383                <dt>msgtype:</dt>
    2384                <dd>The message type -- "request" or "response". If not present, the type can be determined from the first line of the body.</dd>
    2385             </dl>
    2386          </dd>
    2387          <dt>Encoding considerations:</dt>
    2388          <dd>HTTP messages enclosed by this type are in "binary" format; use of an appropriate Content-Transfer-Encoding is required when
    2389             transmitted via E-mail.
    2390          </dd>
    2391          <dt>Security considerations:</dt>
    2392          <dd>none</dd>
    2393          <dt>Interoperability considerations:</dt>
    2394          <dd>none</dd>
    2395          <dt>Published specification:</dt>
    2396          <dd>This specification (see <a href="#internet.media.type.application.http" title="Internet Media Type application/http">Section&nbsp;10.3.2</a>).
    2397          </dd>
    2398          <dt>Applications that use this media type:</dt>
    2399          <dt>Additional information:</dt>
    2400          <dd>
    2401             <dl>
    2402                <dt>Magic number(s):</dt>
    2403                <dd>none</dd>
    2404                <dt>File extension(s):</dt>
    2405                <dd>none</dd>
    2406                <dt>Macintosh file type code(s):</dt>
    2407                <dd>none</dd>
    2408             </dl>
    2409          </dd>
    2410          <dt>Person and email address to contact for further information:</dt>
    2411          <dd>See Authors Section.</dd>
    2412          <dt>Intended usage:</dt>
    2413          <dd>COMMON</dd>
    2414          <dt>Restrictions on usage:</dt>
    2415          <dd>none</dd>
    2416          <dt>Author/Change controller:</dt>
    2417          <dd>IESG</dd>
    2418       </dl>
    2419       <h2 id="rfc.section.10.4"><a href="#rfc.section.10.4">10.4</a>&nbsp;<a id="transfer.coding.registration" href="#transfer.coding.registration">Transfer Coding Registry</a></h2>
    2420       <p id="rfc.section.10.4.p.1">The registration procedure for HTTP Transfer Codings is now defined by <a href="#transfer.coding.registry" title="Transfer Coding Registry">Section&nbsp;6.2.3</a> of this document.
    2421       </p>
    2422       <p id="rfc.section.10.4.p.2">The HTTP Transfer Codings Registry located at &lt;<a href="http://www.iana.org/assignments/http-parameters">http://www.iana.org/assignments/http-parameters</a>&gt; should be updated with the registrations below:
    2423       </p>
    2424       <div id="rfc.table.2">
    2425          <div id="iana.transfer.coding.registration.table"></div>
    2426          <table class="tt full left" cellpadding="3" cellspacing="0">
    2427             <thead>
    2428                <tr>
    2429                   <th>Name</th>
    2430                   <th>Description</th>
    2431                   <th>Reference</th>
    2432                </tr>
    2433             </thead>
    2434             <tbody>
    2435                <tr>
    2436                   <td class="left">chunked</td>
    2437                   <td class="left">Transfer in a series of chunks</td>
    2438                   <td class="left"> <a href="#chunked.encoding" title="Chunked Transfer Coding">Section&nbsp;6.2.1</a>
    2439                   </td>
    2440                </tr>
    2441                <tr>
    2442                   <td class="left">compress</td>
    2443                   <td class="left">UNIX "compress" program method</td>
    2444                   <td class="left"> <a href="#compress.coding" title="Compress Coding">Section&nbsp;6.2.2.1</a>
    2445                   </td>
    2446                </tr>
    2447                <tr>
    2448                   <td class="left">deflate</td>
    2449                   <td class="left">"zlib" format <a href="#RFC1950" id="rfc.xref.RFC1950.2"><cite title="ZLIB Compressed Data Format Specification version 3.3">[RFC1950]</cite></a> with "deflate" compression
    2450                   </td>
    2451                   <td class="left"> <a href="#deflate.coding" title="Deflate Coding">Section&nbsp;6.2.2.2</a>
    2452                   </td>
    2453                </tr>
    2454                <tr>
    2455                   <td class="left">gzip</td>
    2456                   <td class="left">Same as GNU zip <a href="#RFC1952" id="rfc.xref.RFC1952.2"><cite title="GZIP file format specification version 4.3">[RFC1952]</cite></a></td>
    2457                   <td class="left"> <a href="#gzip.coding" title="Gzip Coding">Section&nbsp;6.2.2.3</a>
    2458                   </td>
    2459                </tr>
    2460             </tbody>
    2461          </table>
     2367      <div id="IANA.considerations">
     2368         <h1 id="rfc.section.10"><a href="#rfc.section.10">10.</a>&nbsp;<a href="#IANA.considerations">IANA Considerations</a></h1>
     2369         <div id="message.header.registration">
     2370            <h2 id="rfc.section.10.1"><a href="#rfc.section.10.1">10.1</a>&nbsp;<a href="#message.header.registration">Message Header Registration</a></h2>
     2371            <p id="rfc.section.10.1.p.1">The Message Header Registry located at &lt;<a href="http://www.iana.org/assignments/message-headers/message-header-index.html">http://www.iana.org/assignments/message-headers/message-header-index.html</a>&gt; should be updated with the permanent registrations below (see <a href="#RFC3864" id="rfc.xref.RFC3864.1"><cite title="Registration Procedures for Message Header Fields">[RFC3864]</cite></a>):
     2372            </p>
     2373            <div id="rfc.table.1">
     2374               <div id="iana.header.registration.table"></div>
     2375               <table class="tt full left" cellpadding="3" cellspacing="0">
     2376                  <thead>
     2377                     <tr>
     2378                        <th>Header Field Name</th>
     2379                        <th>Protocol</th>
     2380                        <th>Status</th>
     2381                        <th>Reference</th>
     2382                     </tr>
     2383                  </thead>
     2384                  <tbody>
     2385                     <tr>
     2386                        <td class="left">Connection</td>
     2387                        <td class="left">http</td>
     2388                        <td class="left">standard</td>
     2389                        <td class="left"><a href="#header.connection" id="rfc.xref.header.connection.7" title="Connection">Section&nbsp;9.1</a>
     2390                        </td>
     2391                     </tr>
     2392                     <tr>
     2393                        <td class="left">Content-Length</td>
     2394                        <td class="left">http</td>
     2395                        <td class="left">standard</td>
     2396                        <td class="left"><a href="#header.content-length" id="rfc.xref.header.content-length.2" title="Content-Length">Section&nbsp;9.2</a>
     2397                        </td>
     2398                     </tr>
     2399                     <tr>
     2400                        <td class="left">Date</td>
     2401                        <td class="left">http</td>
     2402                        <td class="left">standard</td>
     2403                        <td class="left"><a href="#header.date" id="rfc.xref.header.date.2" title="Date">Section&nbsp;9.3</a>
     2404                        </td>
     2405                     </tr>
     2406                     <tr>
     2407                        <td class="left">Host</td>
     2408                        <td class="left">http</td>
     2409                        <td class="left">standard</td>
     2410                        <td class="left"><a href="#header.host" id="rfc.xref.header.host.1" title="Host">Section&nbsp;9.4</a>
     2411                        </td>
     2412                     </tr>
     2413                     <tr>
     2414                        <td class="left">TE</td>
     2415                        <td class="left">http</td>
     2416                        <td class="left">standard</td>
     2417                        <td class="left"><a href="#header.te" id="rfc.xref.header.te.4" title="TE">Section&nbsp;9.5</a>
     2418                        </td>
     2419                     </tr>
     2420                     <tr>
     2421                        <td class="left">Trailer</td>
     2422                        <td class="left">http</td>
     2423                        <td class="left">standard</td>
     2424                        <td class="left"><a href="#header.trailer" id="rfc.xref.header.trailer.3" title="Trailer">Section&nbsp;9.6</a>
     2425                        </td>
     2426                     </tr>
     2427                     <tr>
     2428                        <td class="left">Transfer-Encoding</td>
     2429                        <td class="left">http</td>
     2430                        <td class="left">standard</td>
     2431                        <td class="left"><a href="#header.transfer-encoding" id="rfc.xref.header.transfer-encoding.5" title="Transfer-Encoding">Section&nbsp;9.7</a>
     2432                        </td>
     2433                     </tr>
     2434                     <tr>
     2435                        <td class="left">Upgrade</td>
     2436                        <td class="left">http</td>
     2437                        <td class="left">standard</td>
     2438                        <td class="left"><a href="#header.upgrade" id="rfc.xref.header.upgrade.2" title="Upgrade">Section&nbsp;9.8</a>
     2439                        </td>
     2440                     </tr>
     2441                     <tr>
     2442                        <td class="left">Via</td>
     2443                        <td class="left">http</td>
     2444                        <td class="left">standard</td>
     2445                        <td class="left"><a href="#header.via" id="rfc.xref.header.via.2" title="Via">Section&nbsp;9.9</a>
     2446                        </td>
     2447                     </tr>
     2448                  </tbody>
     2449               </table>
     2450            </div>
     2451            <p id="rfc.section.10.1.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>
     2452         </div>
     2453         <div id="uri.scheme.registration">
     2454            <h2 id="rfc.section.10.2"><a href="#rfc.section.10.2">10.2</a>&nbsp;<a href="#uri.scheme.registration">URI Scheme Registration</a></h2>
     2455            <p id="rfc.section.10.2.p.1">The entries for the "http" and "https" URI Schemes in the registry located at &lt;<a href="http://www.iana.org/assignments/uri-schemes.html">http://www.iana.org/assignments/uri-schemes.html</a>&gt; should be updated to point to Sections <a href="#http.uri" title="http URI scheme">2.6.1</a> and <a href="#https.uri" title="https URI scheme">2.6.2</a> of this document (see <a href="#RFC4395" id="rfc.xref.RFC4395.1"><cite title="Guidelines and Registration Procedures for New URI Schemes">[RFC4395]</cite></a>).
     2456            </p>
     2457         </div>
     2458         <div id="internet.media.type.http">
     2459            <h2 id="rfc.section.10.3"><a href="#rfc.section.10.3">10.3</a>&nbsp;<a href="#internet.media.type.http">Internet Media Type Registrations</a></h2>
     2460            <p id="rfc.section.10.3.p.1">This document serves as the specification for the Internet media types "message/http" and "application/http". The following
     2461               is to be registered with IANA (see <a href="#RFC4288" id="rfc.xref.RFC4288.1"><cite title="Media Type Specifications and Registration Procedures">[RFC4288]</cite></a>).
     2462            </p>
     2463            <div id="internet.media.type.message.http">
     2464               <div id="rfc.iref.m.2"></div>
     2465               <div id="rfc.iref.m.3"></div>
     2466               <h3 id="rfc.section.10.3.1"><a href="#rfc.section.10.3.1">10.3.1</a>&nbsp;<a href="#internet.media.type.message.http">Internet Media Type message/http</a></h3>
     2467               <p id="rfc.section.10.3.1.p.1">The message/http type can be used to enclose a single HTTP request or response message, provided that it obeys the MIME restrictions
     2468                  for all "message" types regarding line length and encodings.
     2469               </p>