One document matched: draft-reschke-http-status-308-06.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
This XML document is the output of clean-for-DTD.xslt; a tool that strips
extensions to RFC2629(bis) from documents for processing with xml2rfc.
-->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?>
<!DOCTYPE rfc
PUBLIC "" "rfc2629.dtd">
<rfc ipr="trust200902" docName="draft-reschke-http-status-308-06" category="exp">
<front>
<title abbrev="HTTP Status Code 308">The Hypertext Transfer Protocol (HTTP) Status Code 308 (Permanent Redirect)</title>
<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
<organization abbrev="greenbytes">greenbytes GmbH</organization>
<address>
<postal>
<street>Hafenweg 16</street>
<city>Muenster</city><region>NW</region><code>48155</code>
<country>Germany</country>
</postal>
<email>julian.reschke@greenbytes.de</email>
<uri>http://greenbytes.de/tech/webdav/</uri>
</address>
</author>
<date month="March" year="2012" day="12"/>
<keyword>HTTP</keyword>
<keyword>redirect</keyword>
<keyword>status code</keyword>
<abstract>
<t>
This document specifies the additional HyperText Transfer Protocol (HTTP)
Status Code 308 (Permanent Redirect).
</t>
</abstract>
<note title="Editorial Note (To be removed by RFC Editor before publication)">
<t>
Distribution of this document is unlimited. Although this is not a work
item of the HTTPbis Working Group, comments should be sent to the
Hypertext Transfer Protocol (HTTP) mailing list at <eref target="mailto:ietf-http-wg@w3.org">ietf-http-wg@w3.org</eref>,
which may be joined by sending a message with subject
"subscribe" to <eref target="mailto:ietf-http-wg-request@w3.org?subject=subscribe">ietf-http-wg-request@w3.org</eref>.
</t>
<t>
Discussions of the HTTPbis Working Group are archived at
<eref target="http://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
</t>
<t>
XML versions, latest edits, and the issues list for this document
are available from <eref target="http://greenbytes.de/tech/webdav/#draft-reschke-http-status-308"/>.
</t>
<t>
Test cases related to redirection in general and the status code 308
in particular can be found at <eref target="http://greenbytes.de/tech/tc/httpredirects/#l-308"/>.
</t>
</note>
</front>
<middle>
<section title="Introduction" anchor="introduction">
<t>
HTTP defines a set of status codes for the purpose of redirecting a request
to a different URI (<xref target="RFC3986"/>). The history of these status codes is summarized in
Section 7.3 of <xref target="draft-ietf-httpbis-p2-semantics"/>, which
also classifies the existing status codes into four categories.
</t>
<t>
The first of these categories contains the status codes 301 (Moved Permanently),
302 (Found), and 307 (Temporary Redirect), which can be classified as below:
</t>
<texttable align="left" suppress-title="true">
<ttcol/>
<ttcol>Permanent</ttcol>
<ttcol>Temporary</ttcol>
<c>Allows changing the request method from POST to GET</c>
<c>301</c>
<c>302</c>
<c>Does not allow changing the request method from POST to GET</c>
<c>-</c>
<c>307</c>
</texttable>
<t>
Section 7.3.7 of <xref target="draft-ietf-httpbis-p2-semantics"/>
states that HTTP does not define a permanent variant of status code 307;
this specification adds
the status code 308, defining this missing variant (<xref target="status.308"/>).
</t>
</section>
<section title="Notational Conventions" anchor="notational.conventions">
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119"/>.
</t>
</section>
<section title="308 Permanent Redirect" anchor="status.308">
<t>
The target resource has been assigned a new permanent URI and any future
references to this resource SHOULD use one of the returned URIs. Clients
with link editing capabilities ought to automatically re-link references to
the effective request URI (Section 5.5 of <xref target="draft-ietf-httpbis-p1-messaging"/>)
to one or more of the new references returned by the server, where possible.
</t>
<t>
Caches MAY use a heuristic (see <xref target="draft-ietf-httpbis-p6-cache"/>, Section 2.3.1.1)
to determine freshness for 308 responses.
</t>
<t>
The new permanent URI SHOULD be given by the Location field in the response
(<xref target="draft-ietf-httpbis-p2-semantics"/>, Section 10.5).
A response payload can contain a short hypertext note with a hyperlink
to the new URI(s).
</t>
</section>
<section title="Deployment Considerations" anchor="deployment.considerations">
<t>
Section 4 of <xref target="draft-ietf-httpbis-p2-semantics"/>
requires recipients to treat unknown 3xx status codes the same way as
status code 300 Multiple Choices (<xref target="draft-ietf-httpbis-p2-semantics"/>, Section 7.3.1).
Thus, servers will not be able to rely on automatic redirection happening
similar to status codes 301, 302, or 307.
</t>
<t>
Therefore, initial use of status code 308 will be restricted to cases where
the server has sufficient confidence in the clients understanding the new
code, or when a fallback to the semantics of status code 300 is not problematic.
</t>
<t>
Note that many existing HTML-based user agents will emulate a refresh when encountering
an HTML <meta> refresh directive (<xref target="HTML"/>). This can be used as another
fallback. For example:
</t>
<figure>
<preamble>Client request:</preamble>
<artwork type="message/http; msgtype="request""><![CDATA[
GET / HTTP/1.1
Host: example.com
]]></artwork></figure>
<figure>
<preamble>Server response:</preamble>
<artwork type="message/http; msgtype="response""><![CDATA[
HTTP/1.1 308 Permanent Redirect
Content-Type: text/html; charset=UTF-8
Location: http://example.com/new
Content-Length: 454
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Permanent Redirect</title>
<meta http-equiv="refresh"
content="0; url=http://example.com/new">
</head>
<body>
<p>
The document has been moved to
<a href="http://example.com/new"
>http://example.com/new</a>.
</p>
</body>
</html>
]]></artwork></figure>
</section>
<section title="Security Considerations" anchor="security.considerations">
<t>
All security considerations that apply to HTTP redirects apply to the
308 status code as well (see Section 12 of <xref target="draft-ietf-httpbis-p2-semantics"/>).
</t>
</section>
<section title="IANA Considerations" anchor="iana.considerations">
<t>
The registration below shall be added to the HTTP Status Code Registry
(defined in Section 4.2 of <xref target="draft-ietf-httpbis-p2-semantics"/>
and located at <eref target="http://www.iana.org/assignments/http-status-codes"/>):
</t>
<texttable align="left" suppress-title="true" anchor="iana.status.code.registration.table">
<ttcol>Value</ttcol>
<ttcol>Description</ttcol>
<ttcol>Reference</ttcol>
<c>308</c>
<c>Permanent Redirect</c>
<c>
<xref target="status.308"/> of this specification
</c>
</texttable>
</section>
<section title="Acknowledgements" anchor="acknowledgements">
<t>
The definition for the new status code 308 re-uses text from
the HTTP/1.1 definitions of status codes 301 and 307.
</t>
<t>
Furthermore, thanks to Cyrus Daboo, Eran Hammer-Lahav, Bjoern Hoehrmann, Subramanian Moonesamy, and Peter Saint-Andre for feedback on this document.
</t>
</section>
</middle>
<back>
<references title="Normative References">
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization>Harvard University</organization>
<address><email>sob@harvard.edu</email></address>
</author>
<date month="March" year="1997"/>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
</reference>
<reference anchor="RFC3986">
<front>
<title abbrev="URI Generic Syntax">Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
<organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
<address>
<email>timbl@w3.org</email>
<uri>http://www.w3.org/People/Berners-Lee/</uri>
</address>
</author>
<author initials="R." surname="Fielding" fullname="Roy T. Fielding">
<organization abbrev="Day Software">Day Software</organization>
<address>
<email>fielding@gbiv.com</email>
<uri>http://roy.gbiv.com/</uri>
</address>
</author>
<author initials="L." surname="Masinter" fullname="Larry Masinter">
<organization abbrev="Adobe Systems">Adobe Systems Incorporated</organization>
<address>
<email>LMM@acm.org</email>
<uri>http://larry.masinter.net/</uri>
</address>
</author>
<date month="January" year="2005"/>
</front>
<seriesInfo name="STD" value="66"/>
<seriesInfo name="RFC" value="3986"/>
</reference>
<reference anchor="draft-ietf-httpbis-p1-messaging">
<front>
<title abbrev="HTTP/1.1">HTTP/1.1, part 1: URIs, Connections, and Message Parsing</title>
<author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
<organization abbrev="Adobe">Adobe Systems Incorporated</organization>
<address><email>fielding@gbiv.com</email></address>
</author>
<author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
<organization abbrev="W3C">World Wide Web Consortium</organization>
<address><email>ylafon@w3.org</email></address>
</author>
<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
<organization abbrev="greenbytes">greenbytes GmbH</organization>
<address><email>julian.reschke@greenbytes.de</email></address>
</author>
<date month="March" year="2012"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p1-messaging-19"/>
</reference>
<reference anchor="draft-ietf-httpbis-p2-semantics">
<front>
<title abbrev="HTTP/1.1">HTTP/1.1, part 2: Message Semantics</title>
<author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
<organization abbrev="Adobe">Adobe Systems Incorporated</organization>
<address><email>fielding@gbiv.com</email></address>
</author>
<author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
<organization abbrev="W3C">World Wide Web Consortium</organization>
<address><email>ylafon@w3.org</email></address>
</author>
<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
<organization abbrev="greenbytes">greenbytes GmbH</organization>
<address><email>julian.reschke@greenbytes.de</email></address>
</author>
<date month="March" year="2012"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p2-semantics-19"/>
</reference>
<reference anchor="draft-ietf-httpbis-p6-cache">
<front>
<title abbrev="HTTP/1.1">HTTP/1.1, part 6: Caching</title>
<author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
<organization abbrev="Adobe">Adobe Systems Incorporated</organization>
<address><email>fielding@gbiv.com</email></address>
</author>
<author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
<organization abbrev="W3C">World Wide Web Consortium</organization>
<address><email>ylafon@w3.org</email></address>
</author>
<author initials="M." surname="Nottingham" fullname="Mark Nottingham" role="editor">
<organization>Rackspace</organization>
<address><email>mnot@mnot.net</email></address>
</author>
<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
<organization abbrev="greenbytes">greenbytes GmbH</organization>
<address><email>julian.reschke@greenbytes.de</email></address>
</author>
<date month="March" year="2012"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p6-cache-19"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="HTML" target="http://www.w3.org/TR/1999/REC-html401-19991224">
<front>
<title>HTML 4.01 Specification</title>
<author fullname="David Raggett" surname="Raggett" initials="D."/>
<author fullname="Arnaud Le Hors" surname="Le Hors" initials="A."/>
<author fullname="Ian Jacobs" surname="Jacobs" initials="I."/>
<date year="1999" month="December" day="24"/>
</front>
<seriesInfo name="W3C Recommendation" value="REC-html401-19991224"/>
<annotation>
Latest version available at
<eref target="http://www.w3.org/TR/html401"/>.
</annotation>
</reference>
</references>
<section title="Implementations (to be removed by RFC Editor before publication)" anchor="implementations">
<t>
Chrome: Feature requested in Chromium Issue 109012 (<eref target="http://code.google.com/p/chromium/issues/detail?id=109012"/>).
</t>
<t>
Curl (the library): no change was needed (test case: <eref target="https://github.com/bagder/curl/blob/master/tests/data/test1325"/>).
</t>
<t>
Firefox: Feature requested in Bugzilla bug 714302 (<eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=714302"/>), patch available.
</t>
<t>
Safari: automatically redirects 3xx status codes when a Location header field is present,
but does not preserve the request method.
</t>
</section>
<section title="Change Log (to be removed by RFC Editor before publication)" anchor="change.log">
<section title="Since draft-reschke-http-status-308-00">
<t>
Updated HTTPbis reference. Added <xref target="implementations"/>.
Added and resolved issue "refresh".
</t>
</section>
<section title="Since draft-reschke-http-status-308-01">
<t>
Added URI spec reference.
</t>
</section>
<section title="Since draft-reschke-http-status-308-02">
<t>
Tune HTML example. Expand "Implementations" section.
Added and resolved issue "respformat"
(align with new proposed text for 307 in HTTPbis P2).
</t>
</section>
<section title="Since draft-reschke-http-status-308-03">
<t>
Added and resolved issue "uaconfirm".
</t>
</section>
<section title="Since draft-reschke-http-status-308-04">
<t>
Added and resolved issue "missingconsiderations".
Added request message to example. Updated the Safari implementation note.
</t>
</section>
<section title="Since draft-reschke-http-status-308-05">
<t>
Add informative HTML reference.
Update HTTPbis references.
</t>
</section>
</section>
<section title="Open issues (to be removed by RFC Editor prior to publication)"><section title="edit"><t>
Type: edit</t><t>julian.reschke@greenbytes.de (2011-04-15):
Umbrella issue for editorial fixes/enhancements.
</t></section></section></back>
</rfc>| PAFTECH AB 2003-2026 | 2026-04-24 04:07:31 |