- From: Larry Masinter <masinter@adobe.com>
- Date: Wed, 16 Sep 2009 18:27:07 -0700
- To: Mark Nottingham <mnot@mnot.net>
- CC: "henrik@henriknordstrom.net Nordstrom" <henrik@henriknordstrom.net>, HTTP Working Group <ietf-http-wg@w3.org>
Although http://trac.tools.ietf.org/wg/httpbis/trac/ticket/81 is marked 'closed', Mark sent a strawman rewrite: http://lists.w3.org/Archives/Public/ietf-http-wg/2009JulSep/0521.html After review by Mark, here is a proposed rewrite: =========================================================== HTTP responses include a representation which contains information for interpretation, whether by a human user or for further processing. Often, there are different ways to represent the same information; for example, in different formats, languages, or using different charsets. HTTP clients may have different or variable capabilities, characteristics or preferences which might influence which representation among those available from the server would be best for the server to deliver. For this reason, HTTP provides mechanisms for "content negotiation" -- a process of selecting a representation of a given resource when more than one is available. This specification defines two patterns of content negotiation; "server-driven", where the server selects the representation based upon the client's stated preferences, and "agent-driven" negotiation, where the server provides a list of representations for the client to choose from, based upon their metadata. In addition, systems also use an "active content" pattern, where the server returns active content which runs on the client and, based on client available parameters, selects additional resources to invoke. These patterns are all widely used, and have trade-offs in applicability and practicality. In particular, when the number of preferences or capabilities to be expressed by a client are large (such as when many different formats are supported by a user-agent), server-driven negotiation becomes unwieldy, and may not be appropriate. Conversely, when the number of representations to choose from is very large, agent- driven negotiation may not be. Note that caches can be instructed on how to serve server-negotiated responses using the Vary header [ref], although this mechanism is not richly descriptive. The headers "accept:", "accept-language:" and "accept-charset:" are defined explicitly for content negotiation. In addition, many systems employ "User-Agent" based negotiation, where different content is delivered depending on the version of software employed. In practice, User-Agent based negotiation is fragile, because new clients are not recognized by the deployed servers or active content.
Received on Thursday, 17 September 2009 01:38:42 UTC