Negociación de contenido

La negociación de contenido es un mecanismo de protocolo HTTP que permite ofrecer un mismo recurso (identificado por su URI ) en varias formas diferentes. Las variaciones permitidas se refieren al idioma del recurso y su tipo MIME . Esto permite a los clientes HTTP elegir automáticamente la representación que mejor se adapte a sus capacidades.

Trabajos

La selección del idioma de una página web por parte de un navegador constituye un uso típico de este mecanismo: entre los idiomas en los que está disponible la página, el navegador elige prioritariamente la lengua materna del internauta .

Otro ejemplo clásico es proporcionar una imagen en múltiples formatos , como GIF y PNG  ; así, un navegador que pueda mostrar las imágenes PNG favorecerá este formato (porque ofrece una mejor calidad gráfica), mientras que un navegador que no pueda hacerlo siempre podrá obtener la versión GIF.

Sin negociación de contenido, el servidor HTTP podría mostrar una página de índice para permitir al usuario elegir el tipo de medio que desea. El mecanismo de negociación de contenido hace que este tipo de soluciones sean innecesarias al automatizar la selección.

Operación

Cuando un cliente envía una solicitud a un servidor, informa al servidor de los tipos de medios que comprende y sus preferencias. Concretamente, el cliente envía dos encabezados HTTP. El primero, Accept-Languageenumera los idiomas reconocidos por el cliente, ponderados por tasas de aceptabilidad. El segundo encabezado Accept, funciona de manera análoga para la lista de tipos MIME comprendidos por el navegador. El servidor responde con la versión del recurso que mejor se adapta a las capacidades comunicadas por el cliente.

Por lo tanto, es posible solicitar al servidor HTTP que proporcione preferiblemente un recurso en francés (peso de 1) o, si este idioma no está disponible, en inglés (peso de 0,5, que es menos de 1). Este es el efecto del siguiente encabezado:

Accept-Language: fr; q=1.0, en; q=0.5

Asimismo, el cliente puede declarar por un lado que prefiere el formato HTML (peso 1) a cualquier otro formato textual (peso 0,8), por otro lado que prefiere los formatos GIF y JPEG (empatado, peso 0,6) a cualquier otro formato de imagen (peso 0,5), y finalmente que acepta cualquier tipo de soporte (peso 0,1) como último recurso:

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

La negociación del idioma y el tipo de medio se pueden combinar.

Ver también

enlaces externos

Referencias