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:
Tipo de contenido: = tipo "/" subtipo * [";" parámetro]
tipo: = "aplicación" / "audio" / "imagen" / "mensaje" / "multiparte" / "texto" / "video" / x-token
x-token: = <Los dos caracteres "X-" seguidos, sin espacios en blanco, por ningún token>
subtipo: = token
parámetro: = atributo "=" valor
atributo: = token
valor: = token / cadena citada
ficha: = 1 *
tspecials: = "(" / ")" / "<" / ">" / "@"; Debe estar en / "," / ";" / ":" / "\" / <">; cadena entre comillas, /" / "/" ["/"] "/"? "/". "; para usar dentro de /" = "; valores de parámetros
Y una lista de tipos MIME conocidos que pueden seguirlo (o, como señala Joe, la fuente de la IANA ).
Como puede ver, la lista es demasiado grande para que pueda validarla con todos ellos. Lo que puede hacer es validar contra el formato general y el type
atributo para asegurarse de que sea 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 pueda encontrar al colocarlo) para uso real).
También tenga en cuenta el comentario anterior:
Si se va a utilizar otro tipo primario por algún motivo, se le debe dar un nombre que comience con "X-" para indicar su estado no estándar y evitar cualquier conflicto potencial con un nombre oficial futuro.
Notará que muchas solicitudes / respuestas HTTP incluyen un X-
encabezado de algún tipo que se define por sí mismo, tenga esto en cuenta al validar los tipos.