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]