HTTP" Content-Type"的所有可能值是什么?头?

时间:2014-05-17 17:48:41

标签: http http-headers content-type http-request

我必须先验证Content-Type标头值,然后再将其传递给HTTP请求。

是否有Content-Type的所有可能值的特定列表?

否则,有没有办法在HTTP请求中使用它之前验证内容类型?

4 个答案:

答案 0 :(得分:115)

您可以在此处找到每种内容类型: http://www.iana.org/assignments/media-types/media-types.xhtml

最常见的类型是:

  1. 输入申请

    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. 输入音频

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. 输入图片

    image/gif   
    image/jpeg   
    image/png   
    image/tiff    
    image/vnd.microsoft.icon    
    image/x-icon   
    image/vnd.djvu   
    image/svg+xml    
    
  4. 输入多部分

    multipart/mixed    
    multipart/alternative   
    multipart/related (using by MHTML (HTML mail).)  
    multipart/form-data  
    
  5. 输入文字

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. 输入视频

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

答案 1 :(得分:41)

is defined中的RFC 1341

  

在RFC 822的扩展BNF表示法中,Content-Type标头字段   值定义如下:

     

Content-Type:= type“/”subtype * [“;”参数]

     

type:=“application”/“audio”             /“image”/“message”             /“multipart”/“text”             /“video”/ x-token

     

x-token:=<两个字符“X-”紧随其后,没有              干涉白色空间,任何标记>

     

subtype:= token

     

参数:= attribute“=”value

     

attribute:= token

     

value:= token / quoted-string

     

令牌:= 1 *

     

tspecials:=“(”/“)”/“<” /“>” /“@”;必须在              /“,”/“;” /“:”/“\”/<“&gt ;; quoted-string,              /“/”/“[”/“]”/“?” /“。” ;在内部使用              /“=”;参数值

可以跟随它的a list of known MIME types(或者,如Joe所言,the IANA source)。

正如您所看到的,列表太大,无法验证所有这些列表。你可以做的是验证通用格式和type属性,以确保它是正确的(选项集很小),并假设它后面的内容是正确的(当然捕获任何可能的例外)当你把它用于实际使用时遇到。)

另请注意上面的评论:

  

如果出于任何原因要使用其他主要类型,则必须为其指定一个以“X-”开头的名称,以表明其非标准状态,并避免与未来的官方名称发生任何潜在冲突。

您会注意到很多 HTTP请求/响应包含某种自定义的X-标头,在验证类型时请记住这一点。

答案 2 :(得分:2)

我的目标是覆盖可能的“内容类型”值的子集,您的问题似乎集中于识别已知的内容类型。

@Jeroen RFC 1341引用很棒,但对于IANA保留的相当详尽的列表 正式注册的媒体类型here的网页。

答案 3 :(得分:0)

如果您正在使用jaxrs或其他任何内容,那么在发送请求之前会有一个名为mediatype.User拦截器的类,并将其与此进行比较。