HTTP“content - type”的所有可能值是什么?头吗?

我必须在将Content-Type头值传递给HTTP请求之前验证它。

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

否则,是否有一种方法可以在HTTP请求中使用内容类型之前验证它?

493207 次浏览

RFC 1341中的定义:

在rfc822的扩展BNF表示法中,一个Content-Type报头字段 Value的定义如下:

Content-Type:= type "/"亚型*[”;“参数)

type:=“应用”;/“audio" /“image"/“message" /“multipart"/“text" /“video"/ x-token < / p >

x-token:= <两个字符&;X-"接着,没有 插入空白,任意符号>

子类型:=令牌

参数:= attribute "="价值

属性:= token

取值:= token / quote -string

token:= 1*<除SPACE, ctl或tspecials>之外的任何CHAR;

tspecials:= "("/“),/“;& lt;“和“/“;;/“@"; 一定在 /“,“/“;”;/“:“/“;”;/ & lt;“比;; 引证字符串, /“/”;/“[”;/“]”;/“?“/“!”; 在内部使用 /“=”;; 参数值< / p >

和可以跟在它后面的已知MIME类型的列表(或者,如Joe所说,IANA来源)。

正如您所看到的,这个列表太大了,您无法对所有这些进行验证。你能做的是根据一般格式和type属性进行验证,以确保它是正确的(选项集很小),并假设它后面的内容是正确的(当然,当你实际使用它时,捕捉你可能遇到的任何异常)。

还要注意上面的评论:

如果出于任何原因要使用另一个主要类型,则必须给它一个以“;X-”开头的名称;以表明其非标准地位,并避免与未来的正式名称发生任何潜在冲突。

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

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

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

@Jeroen RFC 1341参考很棒,但对于IANA保存的相当详尽的列表来说 一个官方注册媒体类型的网页在这里.

你可以在这里找到所有的内容类型: http://www.iana.org/assignments/media-types/media-types.xhtml < / p >

最常见的类型有:

  1. < p >类型应用程序:

     application/java-archive
    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. < p >音频类型:

     audio/mpeg
    audio/x-ms-wma
    audio/vnd.rn-realaudio
    audio/x-wav
    
  3. < p >类型图片:

     image/gif
    image/jpeg
    image/png
    image/tiff
    image/vnd.microsoft.icon
    image/x-icon
    image/vnd.djvu
    image/svg+xml
    
  4. < p >类型多部分:

     multipart/mixed
    multipart/alternative
    multipart/related (using by MHTML (HTML mail).)
    multipart/form-data
    
  5. < p >类型文本:

     text/css
    text/csv
    text/html
    text/javascript (obsolete)
    text/plain
    text/xml
    
  6. < p >类型的视频:

     video/mpeg
    video/mp4
    video/quicktime
    video/x-ms-wmv
    video/x-msvideo
    video/x-flv
    video/webm
    
  7. < p >盾类型:

     application/vnd.android.package-archive
    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