ser Quais são todos os valores possíveis para o cabeçalho HTTP "Content-Type"?




type header (4)

Eu tenho que validar o valor do cabeçalho Content-Type antes de passá-lo para o pedido HTTP.

Existe uma lista específica para todos os valores possíveis de Content-Type ?

Caso contrário, existe uma maneira de validar o tipo de conteúdo antes de usá-lo na solicitação HTTP?


Se você estiver usando jaxrs ou qualquer outro, então haverá uma classe chamada mediatype.User interceptor antes de enviar a solicitação e compará-la com isso.


Eu teria como objetivo cobrir um subconjunto de possíveis valores de "Tipo de conteúdo". Sua pergunta parece se concentrar na identificação de tipos de conteúdo conhecidos.

A referência do @Jeroen RFC 1341 é ótima, mas para uma lista bastante completa, a IANA mantém uma página web de tipos de mídia oficialmente registrados iana.org/assignments/media-types/media-types.xhtml .


Você pode encontrar todos os tipos de conteúdo aqui: iana.org/assignments/media-types/media-types.xhtml

O tipo mais comum é:

  1. Digite aplicativo

    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  
    application/x-www-form-urlencoded  
    
  2. Digite áudio

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. Digite a imagem

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

    multipart/mixed    
    multipart/alternative   
    multipart/related (using by MHTML (HTML mail).)  
    multipart/form-data  
    
  5. Digite o texto

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. Digite video

    video/mpeg    
    video/mp4    
    video/quicktime    
    video/x-ms-wmv    
    video/x-msvideo    
    video/x-flv   
    video/webm   
    
  7. Digite 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   
    

Conforme definido no RFC 1341 :

Na notação BNF estendida do RFC 822, um valor de campo de cabeçalho Content-Type é definido da seguinte maneira:

Content-Type: = digite "/" subtipo * [";" parâmetro]

tipo: = "aplicativo" / "áudio" / "imagem" / "mensagem" / "multiparte" / "texto" / "vídeo" / x-token

x-token: = <Os dois caracteres "X-" seguidos, sem espaços em branco intermediários, por qualquer token>

subtipo: = token

parâmetro: = atributo "=" valor

atributo: = token

valor: = token / string entre aspas

token: = 1 *

tspecials: = "(" / ")" / "<" / ">" / "@"; Deve estar em / "," / ";" / ":" / "\" / <">; quoted-string, /" / "/" ["/"] "/"? "/". "; para usar em /" = "; valores de parâmetros

E uma lista de tipos MIME conhecidos que podem segui-lo (ou, como Joe observa, iana.org/assignments/media-types/media-types.xhtml ).

Como você pode ver, a lista é muito grande para você validar contra todos eles. O que você pode fazer é validar em relação ao formato geral e ao atributo type para ter certeza de que está correto (o conjunto de opções é pequeno) e apenas assumir que o que segue está correto (e claro pegar qualquer exceção que você possa encontrar quando colocar para uso real).

Observe também o comentário acima:

Se outro tipo primário for usado por qualquer motivo, ele deve receber um nome começando com "X-" para indicar seu status não padrão e para evitar qualquer conflito potencial com um nome oficial futuro.

Você notará que muitas solicitações / respostas HTTP incluem um cabeçalho X- de algum tipo que é auto-definido, tenha isso em mente ao validar os tipos.





http-request