Re: [httpbis] #81: Content Negotiation for media types

Reopened, and +1

On 17/09/2009, at 11:27 AM, Larry Masinter wrote:

> Although
> is marked 'closed', Mark sent a strawman rewrite:
> 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.

Mark Nottingham

Received on Thursday, 17 September 2009 03:40:40 UTC