Inhaltsverhandlung
Inhaltsverhandlung bezieht sich auf Mechanismen, die als Teil von definiert sind Http Das ermöglicht es, verschiedene Versionen eines Dokuments (oder allgemeiner Darstellungen einer Ressource) gleich zu dienen Uri, so dass Benutzeragenten Kann angeben, welche Version ihre Funktionen am besten passt. Eine klassische Verwendung dieses Mechanismus besteht darin, ein Bild in zu dienen GIF oder Png Format, so dass ein Browser, der PNG -Bilder nicht anzeigen kann (z. B. MS Internet Explorer 4), der GIF -Version serviert wird.
Eine Ressource kann in verschiedenen Darstellungen verfügbar sein. Zum Beispiel kann es in verschiedenen Sprachen oder in verschiedenen Medientypen verfügbar sein. Eine Möglichkeit, die am besten geeignete Auswahl auszuwählen, besteht darin, dem Benutzer eine Indexseite zu geben und ihn die am besten geeignete Auswahl auszuwählen. Es ist jedoch häufig möglich, die Auswahl anhand einiger Auswahlkriterien zu automatisieren.
Mechanismen
HTTP sieht verschiedene Mechanismen für die Verhandlung von Inhalten vor, darunter: servergesteuerte (oder proaktive), agentengesteuerte (oder reaktive), transparente und/oder hybride Kombinationen davon.
Servergetrieben
Servergesteuerte oder proaktive Inhaltsverhandlungen werden von Algorithmen auf dem Server durchgeführt, die sich zwischen den möglichen Variantendarstellungen auswählen. Dies wird üblicherweise basierend auf von Benutzer Agent bereitgestellten Akzeptanzkriterien durchgeführt.
Um zusammenzufassen, wie dies funktioniert, informiert der Benutzeragent den Server, wenn ein Benutzeragent eine Anforderung an einen Server einreicht, was Medientypen oder andere Aspekte der Inhaltspräsentation, die sie versteht, mit Bewertungen darüber, wie gut es sie versteht. Genauer gesagt bietet der Benutzeragent HTTP -Header Dies listet akzeptable Aspekte der Ressourcen- und Qualitätsfaktoren für sie auf. Der Server ist dann in der Lage, die Version der Ressource zu liefern, die den Anforderungen des Benutzeragenten am besten entspricht.
Zum Beispiel könnte ein Browser darauf hinweisen, dass Informationen auf Deutsch durch das Festlegen der Sprache akzeptieren
so was:
Akzeptieren Sprache: de
Der Browser kann stattdessen sagen, dass Deutsch, wenn möglich, bevorzugt wird, aber dass Englisch auch durch Einstellen akzeptabel ist:
Akzeptieren Sprache: DE; q = 1,0, en; q = 0,5
Wo der 'Q' - Qualität - Faktor für Deutsch höher ist als der für Englisch.
Mehrere HTTP -Header werden häufig zusammen mit dem Inhaltsformat oder speziell Medientyp, Sprache und einigen anderen Aspekten einer Ressource zusammengestellt. Zusätzlich zu den häufig verwendeten Annehmen
Header für Medientyp, die Sprache akzeptieren
Header für Sprachverhandlungen, RFC 7231 beschreibt auch Akzeptieren
& Akzeptanzkodierungen
Für Zeichencodierungen bzw. Inhaltscodierungen (Komprimierung).
Ein Beispiel für eine komplexere Anfrage ist, wo ein Browser Header über die Sprache sendet, die angibt, dass Deutsch bevorzugt wird, aber Englisch ist wie oben akzeptabel, und das in Bezug auf Formate, Html (Text/HTML
) wird gegenüber anderen Texttypen bevorzugt (Text/*
), GIF (Bild/Gif
) oder JPEG (Bild/JPG
) Bilder werden gegenüber anderen Bildformaten bevorzugt (Bild/*
) Aber dass jeder andere Medientyp (*/*
) wird als letztes Mittel angenommen:
Sprache akzeptieren: de; q = 1,0, en; q = 0,5 Annehmen: Text/HTML; q = 1,0, Text/*; q = 0,8, Bild/GIF; q = 0,6, Bild/JPEG; q = 0,6, Bild/*; q = 0,5, */*; q = 0,1
Zusätzlich zu Aspekten der servergesteuerten Inhaltsverhandlungen von Inhaltstyp und von Sprache In RFC 7231 angegeben, gibt es Erweiterungen, die andere Aspekte der Inhaltsverhandlung definieren, wie z. Erinnerung was die Verwendung von a beschreibt Akzeptieren
Header zum Abrufen der Version der Darstellung einer Ressource zu bestimmten Zeitpunkten[1] und die IETF/W3C's Inhaltsverhandlung nach Profil[2] das beschreibt die Verwendung eines Akzeptanzprofil
Header zum Abrufen von Ressourcenrepräsentationen, die an Datenprofile entsprechen.
Weder RFC 7231 noch die neueren verwandten Spezifikationen wie z. Inhaltsverhandlung nach Profil[2] Geben Sie an, wie Sie Kompromisse in Fällen lösen können, in denen verschiedene Header widersprüchliche Anforderungen angeben, z.
Agentengetrieben
Agentenorientierte oder reaktive Inhaltsverhandlungen werden von Algorithmen in der Benutzeragent durchgeführt, die zwischen den möglichen Varianten Darstellungen wählen. Dies wird üblicherweise auf der Grundlage einer Serverliste von Darstellungen und Metadaten über sie durchgeführt.
Um zusammenzufassen, wie dies funktioniert, informiert der Server, wenn ein Benutzeragent eine Anforderung an einen Server einreicht, den Benutzerverfahren, welche Darstellungen er verfügbar sind, sowie jede Metadaten, die er über jede Darstellung enthält (z. B. Inhaltstyp, Qualität, Sprache, Sprache, Sprache, Sprache, etc.). Der Benutzer-Agent wird die Anforderung dann für die gewählte Darstellung an eine bestimmte URL weitergeleitet. Dies kann automatisch vom Benutzer-Agent ausgewählt werden oder der Benutzer-Agent kann dem Benutzer die Auswahlmöglichkeiten präsentieren, und der Benutzer kann solche direkt auswählen. Genauer gesagt reagiert der Server entweder mit 300 mehreren Auswahlmöglichkeiten oder 406 nicht akzeptabel (wenn servergetriebene Benutzer-Agent-Akzeptanzkriterien bereitgestellt werden, der Server jedoch nicht automatisch eine Auswahl treffen kann). Leider verlässt HTTP das Format der Liste der Darstellungen und Metadaten zusammen mit nicht spezifizierten Auswahlmechanismen.
Verweise
- ^ Memento: Hinzufügen von Zeit zum Web hinzufügen. Mementoweb.org. Abgerufen am 2013-09-08.
- ^ a b "World Wide Web Consortium (W3C)," Inhaltsverhandlungen von Profil ", W3C Working Draft, 26. November 2019".
Externe Links
- RFC 7231 - Hypertext -Transferprotokoll (HTTP/1.1): Semantik und Inhalt - (Abschnitt 5.3: Inhaltsverhandlung)
- RFC 2295 - Transparente Inhaltsverhandlungen in HTTP
- RFC 2296 - HTTP -Remote -Variante -Auswahlalgorithmus - RVSA/1.0
- Apache -Inhaltsverhandlung
- Open -Source -PHP -Inhaltsverhandlungsbibliothek (unterstützt Wildcards und Q -Werte)
- Diskussion über XHTML, die mit Inhaltsverhandlungen und Browser -Bedenken dienen, die dies erfordern
- Dieser Artikel basiert teilweise auf diese Seite, das von der Apache Foundation urheberrechtlich geschützt ist, aber unter einer kostenlosen Lizenz veröffentlicht wird.