<?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='https://www.w3.org/2014/02/2xx/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-prudhommeaux-http-status-209-00" category="exp">

  

	<front>
  <title abbrev="HTTP Status Code 209">The Hypertext Transfer Protocol (HTTP) Status Code 209 (Contents of Related)</title>
  <author initials="E. G." surname="Prud'hommeaux" fullname="Eric G. Prud'hommeaux">
    <organization abbrev="W3C">World Wide Web Consortium</organization>
    <address>
      <postal>
        <street>32 Vassar St.</street>
        <city>Cambridge</city><region>MA</region><code>02140</code>
        <country>USA</country>
      </postal>
      <email>eric@w3.org</email>	
      <uri>http://www.w3.org/People/Eric/ericP-foaf#ericP</uri>	
    </address>
  </author>

  <date month="February" year="2014" day="21"/>
  
  <keyword>HTTP</keyword>
  <keyword>redirect</keyword>
  <keyword>status code</keyword>

  <abstract>
    <t>
      This document specifies the additional HyperText Transfer Protocol (HTTP)
      Status Code 209 (Contents of Related). 
    </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://www.w3.org/2014/02/2xx/draft-prudhommeaux-http-status-209"/>.
    </t>
    <t>
      Test cases related to redirection in general and the status code 209 in particular can be found at <eref target="http://www.w3.org/2014/02/2xx/tests/"/> as a template.
    </t>
  </note>


  </front>

  <middle>






<section title="Introduction" anchor="introduction">
<t>
  The HTTP 2xx status codes indicate that the client's request was successfully received, understood, and accepted.
  The 209 status code response signals that Location field identifies a resource related to the requested resource and that the response contents are a representation of that related resource.
</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="209 Contents of Related" anchor="status.209">

<t>
  The 209 (Contents of Related) status code indicates that the server is redirecting the user agent to a different resource, as indicated by a URI in the Location header field, that is intended to provide an indirect response to the original request.
  The contents of the response are a representation of the resource identified in the Location header field.
  The 209 response bypasses the extra round trip required for use cases conventionally solved with a 303 (See Other) response followed by the client performing a second GET on the target of that redirect.
  For example, 209 streamlines these uses of 303 response codes:

<list style="symbols">
    <t>An HTTP client performs a GET on a resource which is not an information resource.
       The server responsd with a 303 and the client performs a second GET to retrieve an information resource related to the previous resource.
       (This idiom is frequently used to provide informative content about resources which specifically distinct from any page describing them.)
    </t>
    <t>An HTTP server responds to a POST request by creating a new resource and using a 303 response code to redirect the client to that new resource.
       (This use case is described in <eref target="http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-25#section-6.4.4"/> .)
    </t>
    <t>The resource requested in a GET is prohibitively large to serve and the server instead responds with a redirect to beginning of a series of resoures paginating the initial resource.
       The paginating resources are interlinked with the 'prev' and 'next' link headers described in <eref target="https://tools.ietf.org/html/rfc5005#section-3"/> .
    </t>
</list>
</t>
<t>
  All header fields other than Location are equivalent to those required in a response to a GET for the resource that is the target of the Location header.
  Caching semantics are for the response are the same as for a 200 response to a GET on the target resource, though it is not necessary to include the Location header field as it is identical to the effective Request URI.
  Additionally, the 209 response to the initial request MAY be cached but it MUST include the Location header field in cached responses.
  Thus, a 209 response can be seen as providing two cache entries, a 200 response for the resource expressed in the Location header field and a 209 response for the initial resource.
</t>

<figure>
  <preamble>Client request:</preamble>
  <artwork type="message/http; msgtype=&#34;request&#34;"><![CDATA[
  GET /hardToGet HTTP/1.1
  Host: example.com
  
  ]]></artwork></figure>
<figure>
  <preamble>Server response:</preamble>
  <artwork type="message/http; msgtype=&#34;response&#34;"><![CDATA[
  HTTP/1.1 209 Contents of Related
  Content-Type: text/turtle
  Location: http://example.com/p1
  Content-Length: 145

  &lt;http://example.com/p1&gt; &lt;http://purl.org/dc/terms/description&gt; """Here is
  everything you might want to know about the requested resource...""" .
  ]]></artwork></figure>

<t>
  http://example.com/p1 may be cached with a response code of 200 and http://example.com/hardToGet may be cached with a response code of 209.
</t>
</section>

<section title="Deployment Considerations" anchor="deployment.considerations">
<t>
  Section 4 of <xref target="draft-ietf-httpbis-p2-semantics"/> specified that all 2xx status codes indicate a successful request.
  However, some conventional clients may not be specifically programmed to accept content accompanying a 2xx response other than 200.
  Therefore, initial use of status code 209 will be restricted to cases where the server has sufficient confidence in the clients understanding the new code.
  A client MAY indicate that it expects a 209 status code with a header like "Prefer: follow-link rel=first".
</t>

</section>

<section title="Security Considerations" anchor="security.considerations">
<t>
  All security considerations that apply to either 303 or 200 response codes apply also to the 209 status code (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>209</c>
   <c>Contents of Related</c>
   <c>
      <xref target="status.209"/> of this specification
   </c>
</texttable>
</section>

<section title="Acknowledgements" anchor="acknowledgements">
<t>
  The definition for the new status code 209 re-uses text from
  the HTTP/1.1 definitions of 2xx status codes.
</t>
<t>
  The structure and much of the text of this draft was taken from <eref target="http://tools.ietf.org/html/draft-reschke-http-status-308-07"/>
</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="TURTLE" target="http://www.w3.org/turtle">
  <front>
    <title>TURTLE 4.01 Specification</title>
    <author fullname="David Beckett" surname="Beckett" initials="D."/>
    <author fullname="Tim Berners-Lee" surname="Berners-Lee" initials="T."/>
    <author fullname="Eric Prud'hommeaux" surname="Prud'hommeaux" initials="E."/>
    <author fullname="Gavin Carothers" surname="Carothers" initials="G."/>
    <date year="2014" month="January" day="09"/>
  </front>
  <seriesInfo name="W3C Proposed Recommendation" value="PR-turtle-20140109"/>
  <annotation>
    Latest version available at
    <eref target="http://www.w3.org/TR/turtle"/>.
  </annotation>
</reference>
</references>


<section title="Implementations (to be removed by RFC Editor before publication)" anchor="implementations">
<t>
  @@Expected from W3C Linked Data Platform Working Group
</t>
</section>

<section title="Change Log (to be removed by RFC Editor before publication)" anchor="change.log">
<section title="No previous version"><!-- Since draft-prudhommeaux-http-status-209-00 -->
<t>
  ...
</t>
</section>

</section>
  <section title="Resolved issues (to be removed by RFC Editor before publication)"><t>
          Issues that were either rejected or resolved in this version of this
          document.
        </t><section title="noPreviousVersion"><t>
        no previous versions
      </t><t>
    ...
  </t></section></section><section title="Open issues (to be removed by RFC Editor prior to publication)"><section title="edit"><t>
      Type: edit</t><t>eric@w3.org (2014-02-21): 
    Umbrella issue for editorial fixes/enhancements.
  </t></section></section></back>

</rfc>
