我必须先验证Content-Type
标头值,然后再将其传递给HTTP请求。
是否有针对所有可能值的特定列表Content-Type
?
否则,有没有办法在HTTP请求中使用内容类型之前对其进行验证?
我必须先验证Content-Type
标头值,然后再将其传递给HTTP请求。
是否有针对所有可能值的特定列表Content-Type
?
否则,有没有办法在HTTP请求中使用内容类型之前对其进行验证?
Answers:
您可以在此处找到每种内容类型:http : //www.iana.org/assignments/media-types/media-types.xhtml
最常见的类型是:
类型申请
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
输入音频
audio/mpeg
audio/x-ms-wma
audio/vnd.rn-realaudio
audio/x-wav
输入图片
image/gif
image/jpeg
image/png
image/tiff
image/vnd.microsoft.icon
image/x-icon
image/vnd.djvu
image/svg+xml
键入多部分
multipart/mixed
multipart/alternative
multipart/related (using by MHTML (HTML mail).)
multipart/form-data
输入文字
text/css
text/csv
text/html
text/javascript (obsolete)
text/plain
text/xml
输入影片
video/mpeg
video/mp4
video/quicktime
video/x-ms-wmv
video/x-msvideo
video/x-flv
video/webm
输入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 822的扩展BNF表示法中,内容类型标头字段值定义如下:
Content-Type:=类型“ /”子类型* [“;” 参数]
类型:=“应用程序” /“音频” /“图像” /“消息” /“多部分” /“文本” /“视频” / x令牌
x-token:= <两个字符“ X-”后面紧跟空格,中间没有空格>
子类型:=令牌
参数:=属性“ =”值
属性:=令牌
值:=令牌/带引号的字符串
令牌:= 1 *
tspecials:=“(” /“)” /“ <” /“>” /“ @”; 必须在/“,” /“;”中 /“:” /“ \” / <“>;引号字符串,/” /“ /” [“ /”]“ /”?“ /”。“;在/” =“中使用;参数值
以及可以跟随它的已知MIME类型的列表(或,如Joe所言,IANA源)。
如您所见,该列表太大了,您无法针对所有列表进行验证。您可以做的是对照常规格式和type
属性进行验证,以确保正确(选项集很小),并假设其后的内容正确(并且当然可以捕获放置它时可能遇到的任何异常)实际使用)。
另请注意上面的评论:
如果出于任何原因要使用其他主要类型,则必须给该名称指定以“ X-”开头的名称,以指示其非标准状态,并避免与将来的正式名称发生任何潜在冲突。
您会注意到,许多HTTP请求/响应都包含X-
一些自定义的标头,在验证类型时请记住这一点。
我的目标是涵盖可能的“内容类型”值的子集,您的问题似乎集中在识别已知的内容类型上。
@Jeroen RFC 1341参考很棒,但是对于一个相当详尽的列表,IANA 在此处保留了一个官方注册媒体类型的网页。