【发布时间】:2017-07-17 18:41:21
【问题描述】:
我想知道什么是内容类型,为什么要设置header请求的内容类型,可以设置多少种header内容? 如果可能,请提供文件。
【问题讨论】:
标签: web httpwebrequest content-type request-headers webresponse
我想知道什么是内容类型,为什么要设置header请求的内容类型,可以设置多少种header内容? 如果可能,请提供文件。
【问题讨论】:
标签: web httpwebrequest content-type request-headers webresponse
Content-Type 在 HTTP 请求的标头中向服务器指定它应该期望的数据。如果服务器允许并接受多种类型的内容,它可以使用该字段知道如何解释请求的正文。
例如:如果服务器允许 XML 和 JSON 数据位于同一端点,则将 Content-Type 设置为:
内容类型:application/json
会让服务器知道它应该期望请求正文包含 JSON。而通过:
内容类型:文本/xml
将通知服务器在正文中期待 XML。
RFC7321 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content 在3.1.1.5 部分定义Content-Type:
“Content-Type”标头字段表示媒体类型 相关表示:包含在 消息有效负载或选定的表示,由 消息语义。指示的媒体类型定义了数据 格式以及接收者打算如何处理该数据, 在接收到的消息语义范围内,在任何内容之后 Content-Encoding 指示的编码被解码。
有 1500+ 个Media types 注册了IANA,可以将其设置为Content-Type 进行请求。
第 3.1.1.5 节的最后一段解释说,如果未设置 Content-Type,服务器可能会假定数据为 application/octet-stream 或以任何它想要的方式解释请求。但是:
这样做的客户 所以冒着得出错误结论的风险,这可能会暴露额外的 安全风险(例如,“权限提升”)。
当服务器执行此操作时称为Content Sniffing,可以通过设置禁用:
X-Content-Type-Options: nosniff
【讨论】:
如果您不设置 Content-Type,您的应用可能无法运行。
例如,如果您正在构建一个需要 json 格式数据的应用,并且您没有在标题中包含 Content-Type: application/json,那么在大多数情况下,您的应用都会出现故障。
【讨论】: