publicar mercadolibre apis utf-8 http-headers w3c rfc email-headers

utf-8 - apis - api mercadolibre publicar



Content-Type con solo juego de caracteres (2)

La producción en RFC 2616 para el encabezado Content-Type es esta:

Content-Type = "Content-Type" ":" media-type

Y la producción media-type es esta:

media-type = type "/" subtype *( ";" parameter ) type = token subtype = token

Eso dice que mientras que la parte del parámetro (p. Ej., charset=utf-8 es opcional, la parte del type "/" subtype no es, es decir, un tipo de medio debe tener el tipo seguido de una barra seguido de un subtipo.

Así que Content-Type: charset=utf-8 no es una sintaxis válida por eso, y no está especialmente definido en ningún otro lado normativo / autoritario.

RFC 2616 en realidad está obsoleto por RFC 7231 y varios otros RFC (los actuales RFC de HTTP).

Pero las partes correspondientes de RFC 7231 definen esencialmente las mismas producciones para este caso:

La producción en RFC 7231 para el valor del encabezado Content-Type es esta:

Content-Type = media-type

Y la producción media-type es esta:

media-type = type "/" subtype *( OWS ";" OWS parameter ) type = token subtype = token

Y ninguna otra especificación obsoleta o reemplaza esa parte-RFC 7231 sigue siendo autorizada en esto.

La mayoría de los lenguajes de programación tienen buenas librerías de análisis de tipos de medios para la comprobación de sintaxis; ejemplo:

npm install content-type node -e "var ct = require(''content-type''); ct.parse(''charset=utf-8'')" => TypeError: invalid media type node -e "var ct = require(''content-type''); ct.parse(''image; charset=utf-8'')" => TypeError: invalid media type

Me encontré con este interesante encabezado:

Content-Type: charset=utf-8

Establecer el encabezado HTTP en UTF-8 usando PHP

El contestador dice que esta sintaxis está definida por RFC 2616 , pero no la veo en el enlace proporcionado. ¿Es esta sintaxis válida y, en caso afirmativo, dónde se define específicamente?


No, no puedo encontrar dicho tipo de contenido definido en ningún lugar en RFC 2616 o RFC 7231.

Y ni siquiera funciona en Chrome.

(Intenté xhr.setRequestHeader(''Content-type'',''charset=utf-8''); Cuando xhr.send no hay ningún encabezado de content-type ).