Negociació de contingut
La negociació de contingut és un mecanisme definit a l'especificació HTTP que permet que se serveixin diferents versions d'un document (o de forma més general, d'un recurs) des d'un mateix URL, perquè així un agent d'usuari rebi la versió que s'escau més a les seues capacitats o preferències.
Això s'havia fet servir per a servir imatges tant en format GIF com en PNG, per tal que els navegadors que encara no poguessin tractar els PNG, poguessin mostrar la versió en format GIF de la imatge.
L'agent d'usuari envia una capçalera HTTP (Accept
) amb els diferents tipus MIME que entén juntament amb indicacions de com ho fa. Llavors, el servidor respon amb la versió que millor s'escauria a les necessitats de l'agent.
D'aquesta manera, un recurs pot estar disponible en diferents representacions. Per exemple, pot estar-ho en diferents llengües o proporcionar diferents suports o tipus de fitxer. Una manera de seleccionar l'opció més adequada és oferir una pàgina índex a l'usuari i deixar-lo que esculli. No obstant això, sovint el mateix servidor permet fer aqueixa tria automàticament. Això és possible perquè els navegadors mateixos envien les preferències. N'és un exemple la llengua. Per a demanar només representacions en català, en tant que disponibles, el navegador enviaria:
Accept-Language: ca
Un exemple de sol·licitud més complex seria la d'un navegador configurat per a acceptar català i àrab, però amb preferència pel català; acceptar diferents tipus de fitxer, però preferint HTML davant de text net o d'altres; i preferint GIF or JPEG davant d'altres tipus, però podent-ne acceptar d'altres en darrera instància:
Accept-Language: ca; q=1.0, ar; 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
Vegeu també
[modifica]Referències
[modifica]- L'original d'aquest article es basa en aquesta pàgina Arxivat 2014-11-15 a Wayback Machine., amb copyright de the Apache Foundation però publicat sota una llicència lliure.
Enllaços externs
[modifica]- RFC 2616 – Hypertext Transfer Protocol -- HTTP/1.1 – (Section 12: Content Negotiation) (anglès)
- RFC 2295 – Transparent Content Negotiation in HTTP (anglès)
- Negociació de contingut a Apache (anglès)