web-dev-qa-db-fra.com

Quelles sont toutes les valeurs possibles pour l'en-tête HTTP "Content-Type"?

Je dois valider l'en-tête Content-Type avant de le transmettre à la requête HTTP.

Existe-t-il une liste spécifique pour toutes les valeurs possibles de Content-Type?

Sinon, existe-t-il un moyen de valider le type de contenu avant de l'utiliser dans une requête HTTP?

209
Awesome

Vous pouvez trouver tous les types de contenu ici: http://www.iana.org/assignments/media-types/media-types.xhtml

Les types les plus courants sont:

  1. Application type

    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. Type audio

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. Type d'image

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

    multipart/mixed    
    multipart/alternative   
    multipart/related (using by MHTML (HTML mail).)  
    multipart/form-data  
    
  5. Tapez le texte

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. Type vidéo

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

Comme est défini dans RFC 1341 :

Dans la notation BNF étendue de la RFC 822, une valeur de champ d’en-tête Content-Type est définie comme suit:

Content-Type: = type "/" sous-type * [";" paramètre]

type: = "application"/"audio"/"image"/"message"/"multipart"/"texte"/"vidéo"/x-jeton

jeton x: = <Les deux caractères "X-" suivis, sans espace blanc, par aucun jeton>

sous-type: = jeton

paramètre: = attribut "=" valeur

attribut: = jeton

valeur: = jeton/chaîne citée

jeton: = 1 *

tspecials: = "("/")"/"<"/">"/"@"; Doit être dans/","/";"/":"/"\"/<">; chaîne entre guillemets, /"/"/" ["/"] "/"? "/". "; à utiliser dans /" = "; valeurs de paramètre

Et ne liste de types MIME connus qui peuvent la suivre (ou, comme le remarque Joe, la source IANA ).

Comme vous pouvez le constater, la liste est bien trop longue pour que vous puissiez la valider. Ce que vous pouvez faire est de valider par rapport au format général et à l’attribut type pour vous assurer qu’il est correct (le jeu d’options est petit) et supposez simplement que ce qui suit est correct (et, bien sûr, capturer les exceptions rencontre lorsque vous l’utilisez pour un usage réel).

Notez également le commentaire ci-dessus:

Si un autre type principal doit être utilisé pour une raison quelconque, vous devez lui attribuer un nom commençant par "X-" afin d'indiquer son statut non standard et d'éviter tout conflit potentiel avec un nom officiel futur.

Vous remarquerez que beaucoup de requêtes/réponses HTTP incluent un en-tête de type X- défini par l'utilisateur, gardez cela à l'esprit. lors de la validation des types.

45
Jeroen Vannevel

Je voudrais couvrir un sous-ensemble de valeurs possibles de "type de contenu", votre question semble se concentrer sur l'identification des types de contenu connus.

La référence @Jeroen RFC 1341 est excellente, mais pour une liste assez exhaustive, l'IANA conserve une page Web des types de supports officiellement enregistrés ici .

2
Pete Hornsby

Si vous utilisez jaxrs ou un autre, il y aura une classe appelée intercepteur mediatype.User avant d'envoyer la demande et de la comparer à celle-ci.

0
geddamsatish