Changeset 1109 for draft-ietf-httpbis/latest/p1-messaging.html
- Timestamp:
- 09/02/11 01:14:45 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p1-messaging.html
r1106 r1109 950 950 through a common intermediary for the sake of security, annotation services, or shared caching. 951 951 </p> 952 <p id="rfc.section.2.2.p.6"><span id="rfc.iref.g.24"></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 952 <p id="rfc.section.2.2.p.6"> <span id="rfc.iref.t.1"></span> <span id="rfc.iref.n.1"></span> An HTTP-to-HTTP proxy is called a "transforming proxy" if it designed or configured to modify request or response messages 953 in a semantically meaningful way (i.e., modifications, beyond those required by normal HTTP processing, that change the message 954 in a way that would be significant to the original sender or potentially significant to downstream recipients). For example, 955 a transforming proxy might be acting as a shared annotation server (modifying responses to include references to a local annotation 956 database), a malware filter, a format transcoder, or an intranet-to-Internet privacy filter. Such transformations are presumed 957 to be desired by the client (or client organization) that selected the proxy and are beyond the scope of this specification. 958 However, when a proxy is not intended to transform a given message, we use the term "non-transforming proxy" to target requirements 959 that preserve HTTP message semantics. 960 </p> 961 <p id="rfc.section.2.2.p.7"><span id="rfc.iref.g.24"></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 953 962 the received requests to the underlying server's protocol. Gateways are often used for load balancing or partitioning HTTP 954 963 services across multiple machines. Unlike a proxy, a gateway receives requests as if it were the origin server for the target … … 958 967 the scope of this specification. 959 968 </p> 960 <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 considered969 <p id="rfc.section.2.2.p.8"><span id="rfc.iref.t.2"></span> A "tunnel" acts as a blind relay between two connections without changing the messages. Once active, a tunnel is not considered 961 970 a party to the HTTP communication, though the tunnel might have been initiated by an HTTP request. A tunnel ceases to exist 962 971 when both ends of the relayed connection are closed. Tunnels are used to extend a virtual connection through an intermediary, 963 972 such as when transport-layer security is used to establish private communication through a shared firewall proxy. 973 </p> 974 <p id="rfc.section.2.2.p.9"><span id="rfc.iref.i.3"></span><span id="rfc.iref.t.3"></span> In addition, there may exist network intermediaries that are not considered part of the HTTP communication but nevertheless 975 act as filters or redirecting agents (usually violating HTTP semantics, causing security problems, and otherwise making a 976 mess of things). Such a network intermediary, referred to as an "interception proxy" <a href="#RFC3040" id="rfc.xref.RFC3040.1"><cite title="Internet Web Replication and Caching Taxonomy">[RFC3040]</cite></a> or "transparent proxy" <a href="#RFC1919" id="rfc.xref.RFC1919.1"><cite title="Classical versus Transparent IP Proxies">[RFC1919]</cite></a>, differs from an HTTP proxy because it has not been selected by the client. Instead, the network intermediary redirects outgoing 977 TCP port 80 packets (and occasionally other common port traffic) to an internal HTTP server. Interception proxies are commonly 978 found on public network access points as a means of enforcing account subscription prior to allowing use of non-local Internet 979 services. They are indistinguishable from a man-in-the-middle attack. 964 980 </p> 965 981 <div id="rfc.iref.c.3"></div> … … 1159 1175 might introduce security flaws due to the differing ways that such parsers interpret invalid characters. 1160 1176 </p> 1161 <p id="rfc.section.3.1.p.4">HTTP allows the set of defined header fields to be extended without changing the protocol version (see <a href="#header.field.registration" title="Header Field Registration">Section 10.1</a>). However, such fields might not be recognized by a downstream recipient and might be stripped by non-transparent intermediaries.1162 Unrecognized header fields <em class="bcp14">MUST</em> be forwarded by transparent proxies and <em class="bcp14">SHOULD</em> be ignored by a recipient.1177 <p id="rfc.section.3.1.p.4">HTTP allows the set of defined header fields to be extended without changing the protocol version (see <a href="#header.field.registration" title="Header Field Registration">Section 10.1</a>). Unrecognized header fields <em class="bcp14">MUST</em> be forwarded by a proxy unless the proxy is specifically configured to block or otherwise transform such fields. Unrecognized 1178 header fields <em class="bcp14">SHOULD</em> be ignored by other recipients. 1163 1179 </p> 1164 1180 <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a> <a id="header.fields" href="#header.fields">Header Fields</a></h2> … … 1375 1391 <p id="rfc.section.4.1.2.p.16">The request-target is transmitted in the format specified in <a href="#http.uri" title="http URI scheme">Section 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. 1376 1392 </p> 1377 <p id="rfc.section.4.1.2.p.17">A transparentproxy <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 noted1393 <p id="rfc.section.4.1.2.p.17">A non-transforming proxy <em class="bcp14">MUST NOT</em> rewrite the "path-absolute" part of the received request-target when forwarding it to the next inbound server, except as noted 1378 1394 above to replace a null path-absolute with "/" or "*". 1379 1395 </p> … … 1415 1431 </p> 1416 1432 <div id="rfc.iref.e.1"></div> 1417 <div id="rfc.iref.t. 2"></div>1433 <div id="rfc.iref.t.4"></div> 1418 1434 <h2 id="rfc.section.4.3"><a href="#rfc.section.4.3">4.3</a> <a id="effective.request.uri" href="#effective.request.uri">Effective Request URI</a></h2> 1419 1435 <p id="rfc.section.4.3.p.1">HTTP requests often do not carry the absolute URI (<a href="#RFC3986" id="rfc.xref.RFC3986.20"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, <a href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3</a>) for the target resource; instead, the URI needs to be inferred from the request-target, Host header field, and connection … … 1826 1842 </p> 1827 1843 <h4 id="rfc.section.7.1.3.2"><a href="#rfc.section.7.1.3.2">7.1.3.2</a> <a id="non-modifiable.header-fields" href="#non-modifiable.header-fields">Non-modifiable Header Fields</a></h4> 1828 <p id="rfc.section.7.1.3.2.p.1">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end header fields. A transparent1844 <p id="rfc.section.7.1.3.2.p.1">Some features of HTTP/1.1, such as Digest Authentication, depend on the value of certain end-to-end header fields. A non-transforming 1829 1845 proxy <em class="bcp14">SHOULD NOT</em> modify an end-to-end header field unless the definition of that header field requires or specifically allows that. 1830 1846 </p> 1831 <p id="rfc.section.7.1.3.2.p.2">A transparentproxy <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:1847 <p id="rfc.section.7.1.3.2.p.2">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a request or response, and it <em class="bcp14">MUST NOT</em> add any of these fields if not already present: 1832 1848 </p> 1833 1849 <ul> … … 1837 1853 <li>Last-Modified</li> 1838 1854 </ul> 1839 <p id="rfc.section.7.1.3.2.p.3">A transparentproxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response:1855 <p id="rfc.section.7.1.3.2.p.3">A non-transforming proxy <em class="bcp14">MUST NOT</em> modify any of the following fields in a response: 1840 1856 </p> 1841 1857 <ul> … … 1851 1867 <li>Content-Type</li> 1852 1868 </ul> 1853 <p id="rfc.section.7.1.3.2.p.6">A non-transparentproxy <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.9"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>).1869 <p id="rfc.section.7.1.3.2.p.6">A transforming proxy <em class="bcp14">MAY</em> modify or add these fields to a message that does not include no-transform, but if it does so, it <em class="bcp14">MUST</em> add a Warning 214 (Transformation applied) if one does not already appear in the message (see <a href="p6-cache.html#header.warning" title="Warning">Section 3.6</a> of <a href="#Part6" id="rfc.xref.Part6.9"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>). 1854 1870 </p> 1855 1871 <div class="note" id="rfc.section.7.1.3.2.p.7"> … … 1858 1874 </p> 1859 1875 </div> 1860 <p id="rfc.section.7.1.3.2.p.8">A transparentproxy <em class="bcp14">MUST</em> preserve the message payload (<a href="#Part3" id="rfc.xref.Part3.6"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), though it <em class="bcp14">MAY</em> change the message-body through application or removal of a transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section 6.2</a>).1876 <p id="rfc.section.7.1.3.2.p.8">A non-transforming proxy <em class="bcp14">MUST</em> preserve the message payload (<a href="#Part3" id="rfc.xref.Part3.6"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a>), though it <em class="bcp14">MAY</em> change the message-body through application or removal of a transfer-coding (<a href="#transfer.codings" title="Transfer Codings">Section 6.2</a>). 1861 1877 </p> 1862 1878 <h3 id="rfc.section.7.1.4"><a href="#rfc.section.7.1.4">7.1.4</a> <a id="persistent.practical" href="#persistent.practical">Practical Considerations</a></h3> … … 2110 2126 <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. 2111 2127 </p> 2112 <div id="rfc.iref.t. 3"></div>2128 <div id="rfc.iref.t.5"></div> 2113 2129 <div id="rfc.iref.h.11"></div> 2114 2130 <h2 id="rfc.section.9.5"><a href="#rfc.section.9.5">9.5</a> <a id="header.te" href="#header.te">TE</a></h2> … … 2159 2175 is always acceptable. 2160 2176 </p> 2161 <div id="rfc.iref.t. 4"></div>2177 <div id="rfc.iref.t.6"></div> 2162 2178 <div id="rfc.iref.h.12"></div> 2163 2179 <h2 id="rfc.section.9.6"><a href="#rfc.section.9.6">9.6</a> <a id="header.trailer" href="#header.trailer">Trailer</a></h2> … … 2179 2195 <li>Trailer</li> 2180 2196 </ul> 2181 <div id="rfc.iref.t. 5"></div>2197 <div id="rfc.iref.t.7"></div> 2182 2198 <div id="rfc.iref.h.13"></div> 2183 2199 <h2 id="rfc.section.9.7"><a href="#rfc.section.9.7">9.7</a> <a id="header.transfer-encoding" href="#header.transfer-encoding">Transfer-Encoding</a></h2> … … 2723 2739 <h2 id="rfc.references.2"><a href="#rfc.section.13.2" id="rfc.section.13.2">13.2</a> Informative References 2724 2740 </h2> 2725 <table> 2741 <table> 2726 2742 <tr> 2727 2743 <td class="reference"><b id="BCP97">[BCP97]</b></td> … … 2753 2769 <td class="reference"><b id="RFC1900">[RFC1900]</b></td> 2754 2770 <td class="top"><a href="mailto:brian@dxcoms.cern.ch" title="CERN, Computing and Networks Division">Carpenter, B.</a> and <a href="mailto:yakov@cisco.com" title="cisco Systems">Y. Rekhter</a>, “<a href="http://tools.ietf.org/html/rfc1900">Renumbering Needs Work</a>”, RFC 1900, February 1996. 2771 </td> 2772 </tr> 2773 <tr> 2774 <td class="reference"><b id="RFC1919">[RFC1919]</b></td> 2775 <td class="top"><a href="mailto:mchatel@pax.eunet.ch">Chatel, M.</a>, “<a href="http://tools.ietf.org/html/rfc1919">Classical versus Transparent IP Proxies</a>”, RFC 1919, March 1996. 2755 2776 </td> 2756 2777 </tr> … … 2803 2824 <td class="reference"><b id="RFC2965">[RFC2965]</b></td> 2804 2825 <td class="top"><a href="mailto:dmk@bell-labs.com" title="Bell Laboratories, Lucent Technologies">Kristol, D.</a> and <a href="mailto:lou@montulli.org" title="Epinions.com, Inc.">L. Montulli</a>, “<a href="http://tools.ietf.org/html/rfc2965">HTTP State Management Mechanism</a>”, RFC 2965, October 2000. 2826 </td> 2827 </tr> 2828 <tr> 2829 <td class="reference"><b id="RFC3040">[RFC3040]</b></td> 2830 <td class="top">Cooper, I., Melve, I., and G. Tomlinson, “<a href="http://tools.ietf.org/html/rfc3040">Internet Web Replication and Caching Taxonomy</a>”, RFC 3040, January 2001. 2805 2831 </td> 2806 2832 </tr> … … 3681 3707 <li><a id="rfc.index.I" href="#rfc.index.I"><b>I</b></a><ul> 3682 3708 <li>inbound <a href="#rfc.iref.i.2"><b>2.2</b></a></li> 3709 <li>interception proxy <a href="#rfc.iref.i.3"><b>2.2</b></a></li> 3683 3710 <li>intermediary <a href="#rfc.iref.i.1"><b>2.2</b></a></li> 3684 3711 <li><em>ISO-8859-1</em> <a href="#rfc.xref.ISO-8859-1.1">3.2</a>, <a href="#ISO-8859-1"><b>13.1</b></a></li> … … 3702 3729 <li><a id="rfc.index.N" href="#rfc.index.N"><b>N</b></a><ul> 3703 3730 <li><em>Nie1997</em> <a href="#rfc.xref.Nie1997.1">7.1.1</a>, <a href="#Nie1997"><b>13.2</b></a></li> 3731 <li>non-transforming proxy <a href="#rfc.iref.n.1"><b>2.2</b></a></li> 3704 3732 </ul> 3705 3733 </li> … … 3753 3781 </li> 3754 3782 <li><em>RFC1900</em> <a href="#rfc.xref.RFC1900.1">11.4</a>, <a href="#RFC1900"><b>13.2</b></a></li> 3783 <li><em>RFC1919</em> <a href="#rfc.xref.RFC1919.1">2.2</a>, <a href="#RFC1919"><b>13.2</b></a></li> 3755 3784 <li><em>RFC1945</em> <a href="#RFC1945"><b>13.2</b></a>, <a href="#rfc.xref.RFC1945.1">B</a></li> 3756 3785 <li><em>RFC1950</em> <a href="#rfc.xref.RFC1950.1">6.2.2.2</a>, <a href="#rfc.xref.RFC1950.2">10.4</a>, <a href="#RFC1950"><b>13.1</b></a></li> … … 3776 3805 <li><em>RFC2818</em> <a href="#rfc.xref.RFC2818.1">2.6.2</a>, <a href="#RFC2818"><b>13.2</b></a></li> 3777 3806 <li><em>RFC2965</em> <a href="#rfc.xref.RFC2965.1">3.2</a>, <a href="#RFC2965"><b>13.2</b></a></li> 3807 <li><em>RFC3040</em> <a href="#rfc.xref.RFC3040.1">2.2</a>, <a href="#RFC3040"><b>13.2</b></a></li> 3778 3808 <li><em>RFC3864</em> <a href="#rfc.xref.RFC3864.1">10.1</a>, <a href="#RFC3864"><b>13.2</b></a></li> 3779 3809 <li><em>RFC3986</em> <a href="#rfc.xref.RFC3986.1">1</a>, <a href="#rfc.xref.RFC3986.2">2.6</a>, <a href="#rfc.xref.RFC3986.3">2.6</a>, <a href="#rfc.xref.RFC3986.4">2.6</a>, <a href="#rfc.xref.RFC3986.5">2.6</a>, <a href="#rfc.xref.RFC3986.6">2.6</a>, <a href="#rfc.xref.RFC3986.7">2.6</a>, <a href="#rfc.xref.RFC3986.8">2.6</a>, <a href="#rfc.xref.RFC3986.9">2.6</a>, <a href="#rfc.xref.RFC3986.10">2.6</a>, <a href="#rfc.xref.RFC3986.11">2.6</a>, <a href="#rfc.xref.RFC3986.12">2.6</a>, <a href="#rfc.xref.RFC3986.13">2.6</a>, <a href="#rfc.xref.RFC3986.14">2.6.1</a>, <a href="#rfc.xref.RFC3986.15">2.6.1</a>, <a href="#rfc.xref.RFC3986.16">2.6.3</a>, <a href="#rfc.xref.RFC3986.17">2.6.3</a>, <a href="#rfc.xref.RFC3986.18">4.1.2</a>, <a href="#rfc.xref.RFC3986.19">4.1.2</a>, <a href="#rfc.xref.RFC3986.20">4.3</a>, <a href="#RFC3986"><b>13.1</b></a><ul> … … 3817 3847 </li> 3818 3848 <li><a id="rfc.index.T" href="#rfc.index.T"><b>T</b></a><ul> 3819 <li>target resource <a href="#rfc.iref.t. 2"><b>4.3</b></a></li>3820 <li>TE header <a href="#rfc.xref.header.te.1">6.2</a>, <a href="#rfc.xref.header.te.2">6.2.1</a>, <a href="#rfc.xref.header.te.3">6.4</a>, <a href="#rfc.iref.t. 3"><b>9.5</b></a>, <a href="#rfc.xref.header.te.4">10.1</a></li>3849 <li>target resource <a href="#rfc.iref.t.4"><b>4.3</b></a></li> 3850 <li>TE header <a href="#rfc.xref.header.te.1">6.2</a>, <a href="#rfc.xref.header.te.2">6.2.1</a>, <a href="#rfc.xref.header.te.3">6.4</a>, <a href="#rfc.iref.t.5"><b>9.5</b></a>, <a href="#rfc.xref.header.te.4">10.1</a></li> 3821 3851 <li><em>Tou1998</em> <a href="#rfc.xref.Tou1998.1">7.1.1</a>, <a href="#Tou1998"><b>13.2</b></a></li> 3822 <li>Trailer header <a href="#rfc.xref.header.trailer.1">3.4</a>, <a href="#rfc.xref.header.trailer.2">6.2.1</a>, <a href="#rfc.iref.t.4"><b>9.6</b></a>, <a href="#rfc.xref.header.trailer.3">10.1</a></li> 3823 <li>Transfer-Encoding header <a href="#rfc.xref.header.transfer-encoding.1">3.3</a>, <a href="#rfc.xref.header.transfer-encoding.2">3.3</a>, <a href="#rfc.xref.header.transfer-encoding.3">3.4</a>, <a href="#rfc.xref.header.transfer-encoding.4">6.2</a>, <a href="#rfc.iref.t.5"><b>9.7</b></a>, <a href="#rfc.xref.header.transfer-encoding.5">10.1</a></li> 3824 <li>tunnel <a href="#rfc.iref.t.1"><b>2.2</b></a></li> 3852 <li>Trailer header <a href="#rfc.xref.header.trailer.1">3.4</a>, <a href="#rfc.xref.header.trailer.2">6.2.1</a>, <a href="#rfc.iref.t.6"><b>9.6</b></a>, <a href="#rfc.xref.header.trailer.3">10.1</a></li> 3853 <li>Transfer-Encoding header <a href="#rfc.xref.header.transfer-encoding.1">3.3</a>, <a href="#rfc.xref.header.transfer-encoding.2">3.3</a>, <a href="#rfc.xref.header.transfer-encoding.3">3.4</a>, <a href="#rfc.xref.header.transfer-encoding.4">6.2</a>, <a href="#rfc.iref.t.7"><b>9.7</b></a>, <a href="#rfc.xref.header.transfer-encoding.5">10.1</a></li> 3854 <li>transforming proxy <a href="#rfc.iref.t.1"><b>2.2</b></a></li> 3855 <li>transparent proxy <a href="#rfc.iref.t.3"><b>2.2</b></a></li> 3856 <li>tunnel <a href="#rfc.iref.t.2"><b>2.2</b></a></li> 3825 3857 </ul> 3826 3858 </li>
Note: See TracChangeset
for help on using the changeset viewer.