Individual Submission                                           J. Snell
Internet-Draft                                            March 28, 2011
Intended status: Informational
Expires: September 29, 2011


                         Prefer Header for HTTP
                       draft-snell-http-prefer-03

Abstract

   This specification defines an HTTP header that can be used by a
   client to request that certain behaviors be implemented by a server
   while processing a request.

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 29, 2011.

Copyright Notice

   Copyright (c) 2011 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.





Snell                  Expires September 29, 2011               [Page 1]


Internet-Draft                 HTTP Prefer                    March 2011


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  The Prefer Request Header . . . . . . . . . . . . . . . . . . . 3
   3.  The Preference-Applied Response Header  . . . . . . . . . . . . 4
   4.  The "return-accepted" Preference  . . . . . . . . . . . . . . . 4
   5.  The "return-content" Preference . . . . . . . . . . . . . . . . 4
   6.  The "return-no-content" Preference  . . . . . . . . . . . . . . 4
   7.  The "return-status" Preference  . . . . . . . . . . . . . . . . 4
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 4
     8.1.  The Registry of Preferences . . . . . . . . . . . . . . . . 5
   9.  Security Considerations . . . . . . . . . . . . . . . . . . . . 5
   10. Normative References  . . . . . . . . . . . . . . . . . . . . . 5
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . . . 6





































Snell                  Expires September 29, 2011               [Page 2]


Internet-Draft                 HTTP Prefer                    March 2011


1.  Introduction

   This specification defines a new HTTP header that can be used by a
   client to request that certain behaviors be implemented by a server
   while processing a request.

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted as described in [RFC2119].


2.  The Prefer Request Header

   The Prefer request-header is used to indicate that particular server
   behaviors are preferred by the client, but not required for
   successful completion of the request.  Prefer is similar in nature to
   the Expect header defined by [RFC2616] with the exception that
   servers are allowed to ignore stated preferences.

     Prefer       =  "Prefer" ":" 1#preference

     preference   =  "return-no-content" |
                     "return-content" |
                     "return-status" |
                     preference-extension
     preference-extension =  token [ "=" ( token | quoted-string )
                             *prefer-params ]
     prefer-params =  ";" token [ "=" ( token | quoted-string ) ]

   This header is defined with an extensible syntax to allow for future
   values included in the Registry of Preferences (Section 8.1)).  A
   server that does not recognize or is unable to comply with particular
   preference values in the Prefer header of a request MUST ignore those
   values and MUST NOT stop processing or signal an error.

   Comparison of preference values is case-insensitive for unquoted
   tokens and is case-sensitive for quoted-string preference-extensions.

   An HTTP proxy MAY choose to honor a preference even if the origin
   server does not.  The Prefer request-header MUST be forwarded by the
   proxy if the request is forwarded.

   Note that the application of a preference by the server MAY affect
   the caching characteristics of the response.







Snell                  Expires September 29, 2011               [Page 3]


Internet-Draft                 HTTP Prefer                    March 2011


3.  The Preference-Applied Response Header

   The Preference-Applied response header MAY be included in the
   response message to indicate which Prefer request header values were
   honored by the server and applied to the request.

     Preference-Applied  =  "Preference-Applied" ":" 1#preference


4.  The "return-accepted" Preference

   The "return-accepted" token indicates that the client prefers that
   the server respond with a 202 Accepted response indicating that the
   request has been accepted for processing.


5.  The "return-content" Preference

   The "return-content" token indicates that the client prefers that the
   server include an entity representing the current state of the
   resource in the response to a successful request.


6.  The "return-no-content" Preference

   The "return-no-content" token indicates that the client prefers that
   the server not include an entity in the response to a successful
   request.  Typically, such responses would use the 204 No Content
   status code as defined in Section 10.2.5 of [RFC2616], but other
   status codes can be used as appropriate.


7.  The "return-status" Preference

   The "return-status" token indicates that the client prefers that the
   server include an entity describing the status of the request in the
   response to a successful request.


8.  IANA Considerations

   The 'Prefer' and 'Preference-Applied' headers should be added to the
   permanent registry (see [RFC3864]).








Snell                  Expires September 29, 2011               [Page 4]


Internet-Draft                 HTTP Prefer                    March 2011


       Header field name: Prefer
       Applicable Protocol: HTTP
       Status:
       Author/Change controller: IETF
       Specification document: this specification

       Header field name: Preference-Applied
       Applicable Protocol: HTTP
       Status:
       Author/Change controller: IETF
       Specification document: this specification

8.1.  The Registry of Preferences

   This registry is maintained by IANA and initially contains the
   values: "return-accepted", "return-content", "return-no-content" and
   "return-status".  New assignments are subjects to IESG approval, as
   outlined in [RFC2434].  Requests should be made by email to IANA,
   which will then forward the request to the IESG, requesting approval.
   The request should use the following template:

   o  Preference: (A value for the Prefer request header that conforms
      to the syntax rule given in Section 2)
   o  Description:
   o  Expected server behavior:
   o  Security considerations:


9.  Security Considerations

   Specific preferences requested by a client can introduce security
   considerations and concerns beyond those discussed in [RFC2616].
   Implementors must refer to the specifications and descriptions of
   those preferences to determine the security considerations relevant
   to each.


10.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 2434,
              October 1998.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext



Snell                  Expires September 29, 2011               [Page 5]


Internet-Draft                 HTTP Prefer                    March 2011


              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC3864]  Klyne, G., Nottingham, M., and J. Mogul, "Registration
              Procedures for Message Header Fields", BCP 90, RFC 3864,
              September 2004.


Author's Address

   James M Snell


   Phone:
   Email: jasnell@gmail.com
   URI:




































Snell                  Expires September 29, 2011               [Page 6]