在将其传递给HTTP请求之前,我必须验证Content-Type
标头值。
是否有一个特定的列表为所有可能的值Content-Type
?
否则,在HTTP请求中使用内容类型之前,是否有方法验证该内容类型?
我的目标是涵盖可能的“内容类型”值的子集,您的问题似乎侧重于识别已知的内容类型。
@Jeroen RFC 1341参考很好,但是对于一个相当详尽的列表,IANA在这里保留了一个官方注册媒体类型的网页。
如RFC 1341所定义:
在RFC 822的扩展BNF表示法中,Content-Type标头字段值定义如下:
内容类型:=类型“/”子类型*[”参数]
类型:=“应用程序”/“音频”/“图像”/“消息”/“多部分”/“文本”/“视频”/x-token”
x-token:=
子类型:=令牌
参数:=属性“=”值
属性:=令牌
值:=标记/带引号的字符串
令牌:=1*
特价:= "(" / ")" / "
和一个已知的MIME类型列表,可以遵循它(或者,正如Joe所说,IANA源代码)。
正如您所看到的,列表太大,您无法对照所有列表进行验证。您可以做的是对照常规格式和type
属性进行验证,以确保其正确性(选项集很小),并且只需假设其后面的内容是正确的(当然,还可以捕获实际使用时可能遇到的任何异常)。
还请注意上面的评论:
如果出于任何原因要使用另一个主要类型,则必须为其指定一个以“X-”开头的名称,以表明其非标准状态,并避免与未来的正式名称发生任何潜在冲突。
您会注意到许多HTTP请求/响应都包含某种自定义的X-标头,在验证类型时请记住这一点。
您可以在此处找到每种内容类型: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
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。 HTTP content-type 对照表 文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Typ
问题内容: 检索的对象。此方法可以返回的所有可能值是什么?我可以使用该值来标识数据库中发生的特定错误吗(即,该值可以告诉我是否是PK违例,唯一约束或列值是否很大等)? 同样,该方法应该指示返回的是X / Open(现在称为Open Group)SQL CLI还是SQL99。唯一可能的价值应该是并且我正在获取价值。我想念什么吗? 有没有一种方法可以使用上述方法的组合来确定数据库中发生的特定错误类型?
问题内容: 测试golang网络应用程序时出现问题。在已部署的版本中,nginx位于应用程序的最前面,并进行显式设置,以便所有文本内容类型都附加一个字符集声明。 在测试中,我直接打了golang应用程序,这里的内容类型没有字符集。尝试提供类似d3这样的库时,这会导致问题: 由于golang未指定字符集,因此这些字符在chrome中呈现为: 使golang http服务器在HTTP标头上输出char
我正在使用ASP.NET WebApi创建一个RESTful API。我正在我的一个控制器中创建一个PUT方法,代码如下所示: 当我通过AJAX使用浏览器将其放到该位置时,它给出了以下例外情况: 标头名称使用不当。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMessage一起使用,内容标头与HttpContent对象一起使用。 但是不是一个完全有效的
问题内容: 我正在使用OWASP ZAP在我的本地主机上进行一些渗透测试,并且不断报告此消息: Anti-MIME-Sniffing标头X-Content-Type-Options未设置为’nosniff’ 此检查特定于Internet Explorer 8和Google Chrome。如果Content- Type标头未知,请确保每个页面都设置了Content-Type标头和X-CONTENT-