2011-03-16 14 views
43

Cuando un navegador de aceptar la petición de cabecera dice algo como lo siguiente:encabezado HTTP Accept significa

Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 

¿quiere decir que application/xml, application/xhtml+xml y text/html todos tienen un parámetro de calidad de 0.9?

o significa que application/xml y application/xhtml+xml tienen el defecto (q=1) y text/html tiene el parámetro q=0.9?

Supongo que lo primero, pero esperaba que alguien supiera más definitivamente.

Respuesta

43

No, si el quality parameter falta q=1.0 se supone:

Cada medios de gama puede ir seguido de uno o más Accept-params, comenzando con el parámetro "q" para indicar un factor de calidad relativa [ ...] utilizando la escala qvalue de 0 a 1 (sección 3.9). El valor predeterminado es q = 1.

Así que el valor dado debe interpretarse como: “application/xml, application/xhtml + xml, y la imagen /png son los tipos de medios preferidos, pero si no existen , luego envíe la entidad text/html (text/html;q=0.9), y si eso no existe, envíe la entidad text/plain (text/plain;q=0.8), y si eso no existe, envíe una entidad con cualquier otro medio tipo (*/*;q=0.5). "

+1

Por lo tanto, para aclarar, el '; q = 0.9' solo se aplica a' text/html' en el ejemplo? Y como corolario, 'image/png' también es' q = 1'? – mckamey

+2

Leí el RFC pero encontré que era ambiguo, de ahí la pregunta. Entonces, ¿el rango de medios termina completamente en cada '', ''? – mckamey

+3

@McKAMEY: Sí, exactamente. – Gumbo

0

Verbalmente, esto se interpretaría como "application/xml, application/xhtml + xml e image/png" son los tipos de medios preferidos, pero si no existen, envía la entidad text/html, y si eso no existe , envíe el texto/entidad simple, si eso aún no existe, envíe una entidad con cualquier otro tipo de medio ".

Cuestiones relacionadas