Content Negotiation

Content Negotiation

Unter Content Negotiation (Inhaltsvereinbarung[1]) versteht man eine Technik im Hypertext Transfer Protocol, die eine Abstimmung der Inhalte der angefragten Ressource aufgrund der Möglichkeiten und Vorzüge des Clients ermöglicht.

Inhaltsverzeichnis

Funktionsweise

Im HTTP stehen zur Inhaltsvereinbarung die Anfrage-Header-Felder Accept, Accept-Charset, Accept-Encoding sowie Accept-Language zur Verfügung, die eine durch Kommas getrennte Liste bewerteter Eigenschaften beschreiben.

Accept
Liste akzeptierter Inhaltstypen. Gegenstück in der Antwort ist das Content-Type-Feld
Accept-Charset
Liste akzeptierter Zeichensätze beziehungsweise Zeichenkodierungen. Gegenstück in der Antwort ist der charset-Parameter des Content-Type-Felds
Accept-Encoding
Liste akzeptierter Kodierungen. Gegenstück in der Antwort ist das Content-Encoding-Feld
Accept-Language
Liste akzeptierter Sprachen. Gegenstück in der Antwort ist das Content-Language-Feld

Die Bewertung der Eigenschaften ist über den optionalen Qualitätsparameter q möglich, der Werte zwischen 0 (inakzeptabel) und 1 (bevorzugt) erlaubt; fehlt dieser, wird der Standardwert 1 angenommen. Bei gleicher Wertigkeit wird je nach Header-Feld zusätzliche die Spezifität der Eigenschaft bei der Bestimmung der Reihenfolge herangezogen, wobei spezifischere den weniger spezifischen Eigenschaften vorgezogen werden.

Zusätzlich sollte bei der Nutzung von HTTP-Caching-Techniken in der Antwort des Webservers das Vary-Header-Feld diejenigen Header-Felder der Anfrage genannt werden, die bei der Abstimmung berücksichtigt wurden, die also zur eindeutigen Auswahl der gesendeten Repräsentation der Ressource führten.

Falls die angeforderte URL eine generische ist, sie also die Repräsentation der Ressource nicht eindeutig beschreibt und stattdessen eine Inhaltsvereinbarung stattfindet, die ausgelieferte Repräsentation jedoch eine eigene spezifische URL besitzt, kann diese im Content-Location-Header-Feld angegeben werden.

Beispiel

Eine der am weitesten verbreiteten Anwendungen ist die automatische Auswahl der Sprache (engl. Language Negotiation). Dazu sendet der Client in seiner Anfrage das Feld Accept-Language:

GET /path/to/resource HTTP/1.1
Host: example.com
Accept-Language: de, de-de, en;q=0.5, fr;q=0.2
⋮

Diese Angabe ist so zu interpretieren, dass der Client Deutsch, Englisch und Französisch akzeptiert, wobei allerdings bundesdeutsches Hochdeutsch vor allen anderen Deutsch-Varianten sowie vor Englisch und Französisch bevorzugt wird. Wenn der Server also über eine Version im bundesdeutschen Hochdeutsch, im österreichischem Deutsch und im Schweizer Hochdeutsch verfügt, sollte die bundesdeutsche Version ausgeliefert werden.

Eine Antwort des Webservers könnte dann beispielsweise wie folgt aussehen, hier wird deutschsprachiger Content geladen, ohne eine Varietät des Standarddeutschen zu spezifizieren:

HTTP/1.1 200 OK
Content-Language: de
Content-Location: /de/path/to/resource
Vary: Content-Language
⋮

HTTP-Statuscodes

Das HTTP bietet spezielle Statuscodes an, die der Server an den Client senden sollte, wenn eine inhaltliche Abstimmung nicht möglich war:

300 Multiple Choices
Wird gesendet, wenn mehrere zu den in der Anfrage gestellten Bedingungen passenden Ressourcen an anderer Stelle zu finden sind oder der Server dem Client die Auswahl überlassen möchte. Die entsprechenden Adressen und Charakteristiken der Auswahlmöglichkeiten sollten im Dokument angegeben werden; der Server kann die Adresse eines von ihm bevorzugten Dokuments im Location-Header-Feld mitsenden.
406 Not Acceptable
Wird gesendet, wenn die angefragte Ressource zwar existiert, die vom Client gesendeten Bedingungen aber nicht erfüllbar sind.

Unterstützung durch Webserver

Der Apache HTTP Server bietet über das Modul mod_negotiation die Möglichkeit mehrere Sprachen anzubieten, ohne viel aufwendige Konfiguration betreiben zu müssen. Dazu muss (in der Standardeinstellung) lediglich die ISO-639-Kennung der jeweiligen Sprache an den Dateinamen angehängt werden, so wird deutschen Browsern, die die Datei foo.html anfordern, eigentlich die Datei foo.html.de ausgeliefert. Hierzu erzeugt mod_negotiation transparent typemaps.[2]

Weblinks

Einzelnachweise

  1. Ben Lauri, Peter Laurie: Apache – Das umfassende Handbuch. O’Reilly, 2003, ISBN 978-3-89721-356-2.
  2. https://httpd.apache.org/docs/current/mod/mod_negotiation.html

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Content Negotiation — La négociation de contenu est un processus défini dans la spécification HTTP qui permet de fournir différentes versions d un document électronique (ou plus généralement, une ressource informatique) à la même URL. La négociation de contenu est… …   Wikipédia en Français

  • Content negotiation — HTTP Persistence · Compression · HTTPS Request methods OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT Header fields Cookie · ETag · Location · Referer DNT · …   Wikipedia

  • Content-based instruction — (CBI) is a significant approach in second language acquisition (Brinton, Snow, Wesche, 1989). CBI is designed to provide second language learners instruction in content and language. Historically, the word content has changed its meaning in… …   Wikipedia

  • Face Negotiation Theory — is a theory first postulated by Stella Ting Toomey in 1985 to explain how different cultures manage conflict and communicate. The theory has gone through multiple iterations since that time, and has been updated most recently in 2005.1 In essence …   Wikipedia

  • Bit (content company) — Infobox Company company name = bit company company type = Limited foundation = 2004 country = Israel location = Giv atayim, Israel key people = Guy Behar CO, CEO, Amir Golan CO, CEO homepage = [http://www.bit i.co.il/ www.bit i.co.il] bit is a… …   Wikipedia

  • Négociation du contenu — Content Negotiation La négociation de contenu est un processus défini dans la spécification HTTP qui permet de fournir différentes versions d un document électronique (ou plus généralement, une ressource informatique) à la même URL. La… …   Wikipédia en Français

  • Liste der HTTP-Headerfelder — HTTP Header bzw. HTTP Header Felder (oft synonym genutzt; HTTP Header besitzt allerdings die Mehrdeutigkeit zwischen einem einzelnen Feld des Headerblocks und dem ganzen Headerblock. Hier wird für die Gesamtheit der Headerfelder der Begriff… …   Deutsch Wikipedia

  • HTTP — Название: Hypertext Transfer Protocol Уровень (по модели OSI): Прикладной Семейство: TCP/IP Создан в: 1992 г. Порт/ID: 80/TCP Спецификация …   Википедия

  • Протокол передачи гипертекста — HTTP Название: Hypertext Transfer Protocol Уровень (по модели OSI): Прикладной Семейство: TCP/IP Создан в: 1990 г. Порт/ID: 80/TCP Назначение протокола: Доступ к гипертексту, ныне стал универсальным Спецификация: RFC 1945 …   Википедия

  • Negociation de contenu — Négociation de contenu La Négociation de contenu est un mécanisme défini dans la spécification HTTP qui rend possible de servir différentes versions d un document (ou plus généralement, une resource) à la même URL, ainsi les User Agent peuvent… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”