type form data content application http http-headers content-type http-request

form - ¿Cuáles son todos los valores posibles para el encabezado HTTP "Content-Type"?



content-type pdf (5)

Como se define en RFC 1341 :

En la notación BNF extendida de RFC 822, un valor de campo de encabezado de tipo de contenido se define de la siguiente manera:

Content-Type: = tipo "/" subtipo * [";" parámetro]

tipo: = "aplicación" / "audio" / "imagen" / "mensaje" / "multiparte" / "texto" / "video" / x-token

x-token: = <Los dos caracteres "X-" seguidos, sin espacio en blanco intermedio, por cualquier token>

subtipo: = token

parámetro: = atributo "=" valor

atributo: = token

value: = token / quoted-string

token: = 1 *

tspecials: = "(" / ")" / "<" / ">" / "@"; Debe estar en / "," / "; / ":" / "/" / <">; quote-string, /" / "/" ["/"] "/"? "/". "; para usar dentro /" = "; valores de parámetros

Y una lista de tipos MIME conocidos que pueden seguirlo (o, como Joe comenta, iana.org/assignments/media-types/media-types.xhtml ).

Como puede ver, la lista es demasiado grande para que la valide contra todos ellos. Lo que puedes hacer es validar contra el formato general y el atributo de type para asegurarte de que es correcto (el conjunto de opciones es pequeño) y simplemente asumir que lo que sigue es correcto (y por supuesto detectar cualquier excepción que puedas encontrar cuando pones a su uso real).

También tenga en cuenta el comentario anterior:

Si se va a utilizar otro tipo principal por algún motivo, se le debe dar un nombre que comience por "X-" para indicar su estado no estándar y para evitar cualquier conflicto potencial con un nombre oficial futuro.

Notarás que muchas de las solicitudes / respuestas HTTP incluyen un encabezado X- de algún tipo que está definido por ti mismo, tenlo en cuenta al validar los tipos.

Debo validar el valor del encabezado Content-Type antes de pasarlo a la solicitud HTTP.

¿Hay una lista específica para todos los valores posibles de Content-Type ?

De lo contrario, ¿hay alguna forma de validar el tipo de contenido antes de usarlo en una solicitud HTTP?


El encabezado Content-Type en una solicitud o respuesta HTTP describe el tipo de contenido para el cuerpo del mensaje. El encabezado Aceptar de la solicitud le dice al servidor los tipos de contenido que espera el cliente en el cuerpo de la respuesta. Los tipos de contenido se representan utilizando el tipo de medios de Internet. El tipo de medios de Internet (también conocido como tipo MIME) indica el tipo de datos que contiene un archivo.

Aquí hay un ejemplo:

Content-Type: text/html

Este encabezado indica que el contenido del cuerpo se presenta en formato html. El formato de los valores de tipo de contenido es un tipo / subtipo primario seguido de un par de valores-atributo delimitados por punto y coma opcionales (conocidos como parámetros).

Los tipos de medios de Internet se clasifican ampliamente en las siguientes categorías en función del encabezado de tipo de contenido primario (o inicial):

  • texto : este tipo indica que el contenido es texto sin formato y no se requiere ningún software especial para leer los contenidos. El subtipo representa detalles más específicos sobre el contenido, que pueden ser utilizados por el cliente para un procesamiento especial, si corresponde. Por ejemplo, Content-Type: text / html indica que el contenido del cuerpo es html, y el cliente puede usar esta sugerencia para activar el motor de representación mientras se muestra la respuesta.
  • multiparte : como su nombre lo indica, este tipo consta de varias partes de los tipos de datos independientes. Por ejemplo, Content-Type: multipart / form-data se usa para enviar formularios que contienen los archivos, datos no ASCII y datos binarios.
  • mensaje : este tipo encapsula más mensajes. Permite que los mensajes contengan otros mensajes o punteros a otros mensajes. Por ejemplo, el tipo de contenido : mensaje / tipo de contenido parcial permite que los mensajes grandes se dividan en mensajes más pequeños. El mensaje completo puede ser leído por el cliente (agente de usuario) al juntar todos los mensajes rotos.
  • imagen : este tipo representa los datos de la imagen. Por ejemplo, Content-Type: image / png indica que el contenido del cuerpo es una imagen .png.
  • audio : este tipo indica los datos de audio. Por ejemplo, Content-Type: audio / mpeg indica que el contenido del cuerpo es MP3 u otro audio MPEG.
  • video : este tipo indica los datos de video. Por ejemplo, Content-Type:, video / mp4 indica que el contenido del cuerpo es MP4 video.
  • aplicación : este tipo representa los datos de la aplicación o datos binarios. Por ejemplo, Content-Type : application / json ; charset = utf-8 designa que el contenido está en formato JavaScript Object Notation (JSON) , codificado con codificación de caracteres UTF-8.

Para consultar la lista completa, visite el sitio web de Internet Assigned Numbers Authority (IANA) en iana.org/assignments/media-types/media-types.xhtml


Mi objetivo es cubrir un subconjunto de posibles valores de "tipo de contenido", su pregunta parece enfocarse en identificar tipos de contenido conocidos.

La referencia de @Jeroen RFC 1341 es genial, pero para una lista bastante exhaustiva, IANA mantiene aquí una página web de tipos de medios oficialmente registrados.


Puede encontrar todos los tipos de contenido aquí: iana.org/assignments/media-types/media-types.xhtml

El tipo más común es:

  1. Tipo de aplicación

    application/EDI-X12 application/EDIFACT application/javascript application/octet-stream application/ogg application/pdf application/xhtml+xml application/x-shockwave-flash application/json application/ld+json application/xml application/zip

  2. Tipo de audio

    audio/mpeg audio/x-ms-wma audio/vnd.rn-realaudio audio/x-wav

  3. Tipo de imagen

    image/gif image/jpeg image/png image/tiff image/vnd.microsoft.icon image/x-icon image/vnd.djvu image/svg+xml

  4. Tipo multiparte

    multipart/mixed multipart/alternative multipart/related (using by MHTML (HTML mail).)

  5. Teclee el texto

    text/css text/csv text/html text/javascript (obsolete) text/plain text/xml

  6. Escribir video

    video/mpeg video/mp4 video/quicktime video/x-ms-wmv video/x-msvideo video/x-flv video/webm

  7. Escriba vnd:

    application/vnd.oasis.opendocument.text application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.graphics application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.ms-powerpoint application/vnd.openxmlformats-officedocument.presentationml.presentation application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document application/vnd.mozilla.xul+xml


Si está utilizando jaxrs o cualquier otro, entonces habrá una clase llamada mediatype.User interceptor antes de enviar la solicitud y compararla con esto.