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

Awe*_*ome 233 content-type http http-headers http-request

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

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

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

小智 198

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

最常见的类型是:

  1. 输入申请

    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  
    
    Run Code Online (Sandbox Code Playgroud)
  2. 输入音频

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
    Run Code Online (Sandbox Code Playgroud)
  3. 输入图片

    image/gif   
    image/jpeg   
    image/png   
    image/tiff    
    image/vnd.microsoft.icon    
    image/x-icon   
    image/vnd.djvu   
    image/svg+xml    
    
    Run Code Online (Sandbox Code Playgroud)
  4. 输入multipart

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

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
    Run Code Online (Sandbox Code Playgroud)
  6. 输入视频

    video/mpeg    
    video/mp4    
    video/quicktime    
    video/x-ms-wmv    
    video/x-msvideo    
    video/x-flv   
    video/webm   
    
    Run Code Online (Sandbox Code Playgroud)
  7. 输入vnd:

    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   
    
    Run Code Online (Sandbox Code Playgroud)


Jer*_*vel 47

被定义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:= token

value:= token/quoted-string

令牌:= 1*

tspecials:="("/")"/"<"/">"/"@"; 必须在/","/";" /":"/"\"/ <">; quoted-string,/"/"/"["/"]"/"?"/".";在/"="中使用;参数值

以及可以遵循它的已知MIME类型列表(或者,如Joe 所述,IANA源代码).

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

另请注意上面的评论:

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

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

  • RFC 1341描述了在HTTP中使用的Content-Type标头.你怎么会说他们无关? (2认同)
  • 它已被废弃,并被多次更新的文档取代.有什么相关的是<http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-26.html#rfc.section.3.1.1.5>(加上参考文件)必须说的. (2认同)