繁体   English   中英

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

[英]What are all the possible values for HTTP "Content-Type" header?

在将Content-Type标头值传递给 HTTP 请求之前,我必须对其进行验证。

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

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

您可以在此处找到每种内容类型: 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
  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.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

RFC 1341 中所定义

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

内容类型 := 类型 "/" 子类型 *[";" 范围]

类型:=“应用程序”/“音频”/“图像”/“消息”/“多部分”/“文本”/“视频”/x-token

x-token := < 后跟两个字符“X-”,中间没有空格,任何标记 >

子类型:=令牌

参数:= 属性“=”值

属性 := 令牌

值 := 标记 / 带引号的字符串

令牌:= 1*

tspecials := "(" / ")" / "<" / ">" / "@" ; 必须在 / "," / ";" / ":" / "\\" / <"> ; 带引号的字符串, / "/" / "[" / "]" / "?" / "." ; 使用 / "=" ; 参数值

以及可以跟随它的已知 MIME 类型列表(或者,正如 Joe 所说, IANA 来源)。

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

还要注意上面的评论:

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

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

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

@Jeroen RFC 1341 参考很棒,但是对于相当详尽的列表,IANA 在此处保留了官方注册媒体类型的网页。

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

有没有可以接受所有类型的代码片段

例如:像“*”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM