|
p:abstract
|
-
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, so that user agents can choose which version fit their capabilities the best. One of the most classical uses of this mechanism is to serve an image as both GIF and PNG, so that a browser that doesn't understand PNG can still display the GIF version. To summarize how this works, it's enough to say that user agents are supposed to send an HTTP header (Accept) with the various media types they understand and with indications of how well they understand it. Then, the server replies with the version of the resource that fits the user agents' 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 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
More information needed on how to do Content Negotiation in IIS
IIS 5.1
Clean URLs
Extensionless URLs
Language Negotiation
Mime Type Negotiation
qs values: Quality of content source. IE: Images such as .png/.jpg/.gif
IIS 6.0
Clean URLs
Extensionless URLs
Language Negotiation
Mime Type Negotiation
qs values: Quality of content source. IE: Images such as .png/.jpg/.gif
IIS 7.0
Clean URLs
Extensionless URLs
Language Negotiation
Mime Type Negotiation
qs values: Quality of content source. IE: Images such as .png/.jpg/.gif
Wildcard Mapping
ISAPI filters
ISAPI extensions
404 Mapping
Alternatives when your web host doesn't allow ISAPI filter installation"
(en)
-
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 employée en particulier pour l'accès à des ressources informatiques en différentes langues. La négociation de contenu apporte une méthode de gestion des langues.
Ainsi les User-Agents peuvent choisir laquelle des versions est la mieux adaptée à leurs possibilités. Une des utilisations classiques de ce mécanisme est de servir une image qui soit aussi bien du GIF et du PNG. Ainsi un User-Agent qui ne comprend pas le PNG peut toujours afficher la version en GIF. Pour résumer la façon dont cela fonctionne, on peut dire que les User-Agents sont supposés envoyer un en-tête HTTP (Accept) avec les différents types MIME qu'ils comprennent et avec des indications sur la manière dont ils le comprennent le mieux possible. Alors, le serveur répond avec la version de la ressource qui est la mieux adaptée aux besoins des navigateurs web.
Ainsi, une ressource peut-être disponible en plusieurs représentations. Par exemple, elle peut être disponible en différentes langues ou avec différents types de médias, ou une combinaison des deux. Une solution pour sélectionner le choix le plus approprié, est de donner à l'utilisateur une page index, et le laisser choisir par exemple la partie du site web qui est dans sa langue. Cependant, il est souvent possible pour le serveur de choisir automatiquement. Celà fonctionne parce que les navigateurs peuvent envoyer, comme partie de chaque demande d'information , les représentations qu'ils préfèrent. Par exemple, un navigateur peut indiquer qu'il aimerait afficher l'information en français, si possible, sinon il le fera en anglais. Les navigateurs indiquent leurs préférences par des en-têtes dans la requête. Pour demander seulement des représentations/documents français, le navigateur devrait envoyer
Accept-Language: fr
Notez que cette préférence sera appliquée seulement quand il y a un choix de représentations et que celles-ci varient par langues.
Comme exemple d'une requête plus complexe, ce navigateur a été configuré pour accepter le français et l'anglais, mais il préfère le français, et accepte des types de média variés, préférant le HTML sur l'affichage plein texte ou d'autres types textuels, et préférant le GIF ou le JPEG sur d'autres types de médias, mais permettant aussi n'importe quel type de média en dernier recours:
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"
(fr)
-
Unter Content Negotiation versteht man einen Mechanismus im HTTP-Protokoll, der eine Abstimmung der Inhalte des aufgerufenen Dokuments aufgrund der Möglichkeiten und Einstellungen des Clients ermöglicht. Diese Möglichkeit sollte von einer Internetseite angeboten werden, muss sie aber nicht.
Eine der am weitesten verbreiteten Anwendungen ist die automatische Auswahl der Sprache. Dazu sendet der Client in seiner Anfrage das Feld Accept-Language (im Beispiel mit der Sprache deutsch):
Accept-Language: de
Dem ausführenden Server wird damit bekannt gegeben, dass der Benutzer Deutsch als Sprache bevorzugt. Der Server hat dann die Möglichkeit, die deutsche Version der Seite zu senden, oder – weiter verbreitet – den Benutzer auf eine spezielle Seite weiterzuleiten.
Accept-Language: de; q=1.0, en; q=0.5, fr; q=0.2
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
Mit dieser komplexeren Anfrage gibt der Client an, dass er deutsch, englisch und französisch versteht, wobei er deutsch am besten, englisch am zweitbesten und französisch nur wenig kann.
In der zweiten Zeile wird angegeben, dass er seine Dokumente am liebsten im MIME-Typ text/html (HTML) erhält, aber auch andere Texte anzeigen kann. Bei Bildern werden die Formate GIF und JPEG bevorzugt, aber auch alle anderen können angezeigt werden. Der letzte Block (ab */*) gibt an, dass auch alle anderen Dateien angenommen werden. Diese zeigt der Browser in der Regel aber nicht an, sondern bietet an sie zu speichern.
Im Zusammenhang damit existiert eine weitere Anwendung, sie liegt im Senden verschiedener Versionen eines Bildes. Kann ein Browser beispielsweise nur Bilder im GIF-Format, nicht aber im PNG-Format anzeigen, so kann der Server dem Benutzer die bevorzugte Bild-Version senden."
(de)
|