2009-02-27 16 views

Respuesta

9

Para verificar cuál es la codificación del cuerpo de respuesta, debe verificar el encabezado de respuesta HTTP: Content-Encoding.

El servidor solo puede usar codificaciones especificadas por el encabezado de solicitud accept-encoding. Si el servidor no puede dar una respuesta usando una de las codificaciones de aceptación especificadas, entonces debe responder con 406 (No es aceptable). solicitud

Ejemplo:

GET/HTTP/1.1 
Host: www.brianbondy.com 
Accept-Encoding: gzip,deflate 

Ejemplo de respuesta:

HTTP/1.1 200 OK 
Date: Thu, 04 Dec 2003 16:15:12 GMT 
Server: Apache/2.0 
Content-Encoding: gzip 
Content-Length: 1533 

Otros ejemplos de Accept-Encoding:

Accept-Encoding: compress, gzip 
Accept-Encoding: 
Accept-Encoding: * 
Accept-Encoding: compress;q=0.5, gzip;q=1.0 
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 

cómo saber exactamente lo que están disponibles en el servidor de codificaciones:

No hay manera de saber exactamente lo que están disponibles codificaciones a nivel de servidor, debido a que algunos servidores pueden apoyar ciertas codificaciones sólo para ciertos tipos de archivos.

Eso significa que lo mejor que puede hacer es responder la pregunta: Para el archivo especificado en la primera línea de la solicitud, ¿está disponible la codificación específica para este archivo? Puede responder esto denegando explícitamente la codificación de contenido de identidad y especificando también la codificación que desea conocer.

Accept-Encoding: gzip, identity;q=0 

Source of examples, HTTP RFC

+0

Pero la codificación de identidad (es decir, sin compresión) siempre está permitido, a menos que lo quiera explícitamente.Entonces, si el servidor devuelve Content-Encoding: identity, aún no se sabe si admite compresión o no; podría haber elegido no comprimir esta respuesta en particular. – Thomas

+0

descripción actualizada –

+0

¿Quiere decir 'gzip, identity; q = 0' en lugar de' gzip; identidad; q = 0'? – Pacerier

4

Desde el HTTP spec:

4. La codificación de contenido de "identidad" siempre es aceptable, a menos que se haya rechazado específicamente porque el campo Aceptar codificación incluye "identidad; q = 0", o porque el campo incluye "*; q = 0" y no incluye explícitamente codificación de contenido "identidad". Si el valor de campo Accept-Encoding está vacío, solo la codificación "identidad" es aceptable.

Así que si configura Accept-Encoding: identity;q=0, gzip, deflate fuerza al servidor a comprimirlo, o devuelve un 406 (No es aceptable).

+0

Por lo que sé, Microsoft-IIS/7.0 no respeta esto. ¿Apache respeta esto? ¿O apache simplemente devolvería identidad en lugar de 406 (igual Microsoft-IIS)? – Pacerier

Cuestiones relacionadas