2012-01-18 6 views
9

Hola a todos He estado examinando las cabeceras de petición de Chrome cada vez que escribe una dirección URL en la barra de direcciones y me preguntaba lo que quiere decir exactamente por estas cabeceras:¿Qué significa factor de calidad relativo en HTTP?

Accept: application/xml;q=0.9 
Accept-Charset: utf-8;q=0.7 
Accept-Language: en;q=0.8 

This thread dice que es el factor de calidad, por lo que Chrome está diciendo que está aceptando> = 90% de calidad de la aplicación/xml,> = 70% de calidad UTF-8 y> = 80% de idioma inglés.

¿Qué significa exactamente 90% de calidad de aplicación/xml, 70% de calidad UTF-8 y 80% de idioma inglés?

+2

La respuesta a la que está enlazando parece explicarlo bastante bien: '" Aceptar: audio/*; q = 0.2, audio/básico "DEBE interpretarse como" Prefiero audio/básico, pero envíeme cualquier tipo de audio si es el mejor disponible después de un 80% de reducción de calidad ". Muestra la preferencia del cliente por diferentes tipos. Si solo hay uno, es discutible que no tenga sentido. – deceze

Respuesta

2

Estos encabezados se explican en RFC 2616.

Accept-Charset: utf-8;q=0.7 

La clave para entender esta línea es que la norma ISO-8859-1 es aceptado por defecto, incluso si no se menciona. El encabezado dice "Quiero ISO-8859-1, pero aceptaré UTF-8 si usar ISO-8859-1 degradaría la calidad del objeto enviado en más del 30%". Considero que esto significa que si el 30% de los caracteres no encajarán en ISO-8859-1, entonces use UTF-8, pero el estándar no parece requerir esta interpretación.

Para los otros ejemplos que dio los factores de calidad no son operativos porque no hay alternativas o valores predeterminados para adelantarse a la definición de lo que se acepta.

+0

Por cierto, ¿'identity' es el valor predeterminado para' Accept-Encoding'? – Pacerier

2

El nombre factor de calidad relativo es un poco engañoso.
Creo que se está utilizando para ordenar la preferencia de los valores de la cabecera al igual que el docs dicen:

Un ejemplo más elaborado es

Accept: text/plain; q=0.5, text/html, 
      text/x-dvi; q=0.8, text/x-c 

verbalmente, esto sería interpretado como "texto/html y text/xc son los tipos de medios preferidos, pero si no existen, envíe la entidad text/x-dvi, y si ese no existe, envíe el texto/plain entity. "

En su ejemplo, es fácil de decidir, ya que cada encabezado tiene un solo valor.

+0

Entonces, ¿eso significa que para su ejemplo, 'text/plain; q = 0.0001, text/html, text/x-dvi; q = 0.0002, text/x-c' es igualmente equivalente ya que es * relative *? ¿O estoy malentendiendo algo aquí? – Pacerier

+1

Tenga en cuenta que no puede tener más de tres dígitos después del decimal en qvalores. Además, las respuestas aceptadas parecen incorrectas. No puede tener que ver con "porcentaje de caracteres" o tal. Parece ser nada más que una forma de clasificar las preferencias y los números específicos no significan nada más que si son más grandes o más pequeños que otros números. – BPS