Content Negotiation: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 4: Line 4:


== Mechanism ==
== Mechanism ==
1. When a client makes a request to a server it supplies all the formats it supports in the [[Accept Header]]: <code>Accept: text/html,application/xhtml+xml</code>.
# When a client makes a request to a server it supplies all the formats it supports in the [[Accept Header]]: <code>Accept: text/html,application/xhtml+xml</code>.
2. The server looks at the list the client sent and excludes all formats it does not support.
# The server looks at the list the client sent and excludes all formats it does not support.
3. If there are no common formats, the server either responds with [[406 Not Acceptable]] or it picks a fallback format like <code>text/html</code>.
# If there are no common formats, the server either responds with [[406 Not Acceptable]] or it picks a fallback format like <code>text/html</code>.
4. If there are common formats left, the server picks the one the client marked with the highest priority.
# If there are common formats left, the server picks the one the client marked with the highest priority.
5. The server then returns the content that matches the negotiated format.
# The server then returns the content that matches the negotiated format.
 
== Content-Language Negotiation ==
Aside from negotiating the [[Content-Type Header | Content-Type]] of the response, HTTP also allows clients to negotiate the language of the returned data. This is done in the same way as above but then with the [[Accept-Language Header]].

Navigation menu