Home      Discussion      Topics      Dictionary      Almanac
Signup       Login
Content negotiation

Content negotiation

Overview
Content negotiation is a mechanism defined in the HTTP specification that makes it possible to serve different versions of a document (or more generally, a resource) at the same URI
Uniform Resource Identifier
In computing, a Uniform Resource Identifier consists of a string of characters used to identify or name a resource on the Internet. Such identification enables interaction with representations of the resource over a network using specific protocols...

, so that user agent
User agent
A user agent is the client application used with a particular network protocol; the phrase is most commonly used in reference to those which access the World Wide Web...

s can specify which version fit their capabilities the best. One of the most classical uses of this mechanism is to serve an image in GIF
GIF
The Graphics Interchange Format is a bitmap image format that was introduced by CompuServe in 1987 and has since come into widespread usage on the World Wide Web due to its wide support and portability....

 or PNG format, so that a browser that doesn't understand PNG (e.g.
Discussion
Ask a question about 'Content negotiation'
Start a new discussion about 'Content negotiation'
Answer questions from other users
Full Discussion Forum
 
Encyclopedia
Content negotiation is a mechanism defined in the HTTP specification that makes it possible to serve different versions of a document (or more generally, a resource) at the same URI
Uniform Resource Identifier
In computing, a Uniform Resource Identifier consists of a string of characters used to identify or name a resource on the Internet. Such identification enables interaction with representations of the resource over a network using specific protocols...

, so that user agent
User agent
A user agent is the client application used with a particular network protocol; the phrase is most commonly used in reference to those which access the World Wide Web...

s can specify which version fit their capabilities the best. One of the most classical uses of this mechanism is to serve an image in GIF
GIF
The Graphics Interchange Format is a bitmap image format that was introduced by CompuServe in 1987 and has since come into widespread usage on the World Wide Web due to its wide support and portability....

 or PNG format, so that a browser that doesn't understand PNG (e.g. MS Internet Explorer) can still display the GIF version. To summarize how this works, when a user agent submits a request to a server, the user agent informs the server what media types
Internet media type
An Internet media type, originally called a MIME type after MIME and sometimes a Content-type after the name of a header in several protocols whose value is such a type, is a two-part identifier for file formats on the Internet....

 the user agent understands along with indications of how well it understands them. More precisely, the user agent uses an Accept HTTP header
Header (information technology)
In information technology, header refers to supplemental data placed at the beginning of a block of data being stored or transmitted. In data transmission, the data following the header are sometimes called the payload or body....

 that lists acceptable media types. The server is then able to supply the version of the resource that best fits the user agent's needs.

So, a resource may be available in several different representations. For example, it might be available in different languages or different media types, or a combination. One way of selecting the most appropriate choice is to give the user an index page, and let them select. However it is often possible for the server to choose automatically. This works because browsers can send as part of each request information about the representations they prefer. For example, a browser could indicate that it would like to see information in French, if possible, else English will do. Browsers indicate their preferences by headers in the request. To request only French representations, the browser would send

Accept-Language: fr

Note that this preference will only be applied when there is a choice of representations and they vary by language.

As an example of a more complex request, this browser has been configured to accept French and English, but prefer French, and to accept various media types, preferring HTML over plain text or other text types, and preferring GIF or JPEG
JPEG
In computing, JPEG is a commonly used method of compression for photographic images. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality...

over other media types, but also allowing any other media type as a last resort:

Accept-Language: fr; q=1.0, en; q=0.5
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1

External links