Conforme definido na RFC 1341 :
Na notação BNF estendida do RFC 822, um valor do campo de cabeçalho Content-Type é definido da seguinte maneira:
Tipo de conteúdo: = tipo "/" subtipo * [";" parâmetro]
tipo: = "aplicativo" / "áudio" / "imagem" / "mensagem" / "multipart" / "texto" / "vídeo" / x-token
x-token: = <Os dois caracteres "X-" seguiram, sem espaço em branco, por nenhum token>
subtipo: = token
parâmetro: = atributo "=" valor
attribute: = token
valor: = token / string entre aspas
token: = 1 *
tspecials: = "(" / ")" / "<" / ">" / "@"; Deve estar em / "," / ";" / ":" / "\" / <">; cadeia de caracteres entre aspas, /" / "/" ["/"] "/"? "/". "; para usar dentro de /" = "; valores dos parâmetros
E uma lista de tipos MIME conhecidos que podem segui-lo (ou, como Joe comenta, a fonte da IANA ).
Como você pode ver, a lista é muito grande para você validar com todos eles. O que você pode fazer é validar com relação ao formato geral e aotype
atributo para garantir que esteja correto (o conjunto de opções é pequeno) e apenas assumir que o que se segue está correto (e, é claro, capturar quaisquer exceções que você possa encontrar ao colocá-lo uso real).
Observe também o comentário acima:
Se outro tipo principal for utilizado por qualquer motivo, deve ser atribuído um nome que comece com "X-" para indicar seu status fora do padrão e evitar qualquer conflito potencial com um futuro nome oficial.
Você notará que muitas solicitações / respostas HTTP incluem um X-
cabeçalho de algum tipo que é auto-definido. Lembre-se disso ao validar os tipos.