我们为什么需要设置标头请求的内容类型

时间:2017-02-27 08:25:53

标签: web httpwebrequest content-type request-headers webresponse

我想知道什么是内容类型,为什么我们需要设置标头请求的内容类型以及可以设置多少类型的标头内容? 如果可能请提供文件。

2 个答案:

答案 0 :(得分:4)

HTTP请求标头中的

Content-Type向服务器指定它应该期望的数据。如果服务器允许并接受多种类型的内容,则可以使用此字段知道如何解释请求的正文。

例如:如果服务器允许同一端点上的XML和JSON数据,则将Content-Type设置为:

  

Content-Type:application / json

会让服务器知道它应该期望请求体包含JSON。虽然通过:

  

Content-Type:text / xml

会通知服务器期望正文中的XML。

RFC7321 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content3.1.1.5部分中定义了Content-Type

  

“Content-Type”标题字段表示媒体类型      相关的表示:要么包含在      消息有效负载或选定的表示,由      消息语义。指示的媒体类型定义了两个数据      格式以及收件人要如何处理该数据,      在任何内容之后,在收到的消息语义范围内      Content-Encoding指示的编码被解码。

Media types注册了1500多个IANA,可以将Content-Type设置为请求。

3.1.1.5节的最后一段解释了如果未设置Content-Type,服务器可能会假设数据为application/octet-stream或以任何方式解释请求。但是:

  

做客户      所以冒险得出不正确的结论,这可能会暴露出更多      安全风险(例如,“特权升级”)。

当服务器执行此操作时,它被称为Content Sniffing,可以通过设置:

来禁用它
  

X-Content-Type-Options:nosniff

答案 1 :(得分:1)

如果您未设置Content-Type,则您的应用可能无效。

例如,如果您构建的应用程序需要json格式的数据,并且您的标题中未包含Content-Type: application/json,那么在大多数情况下,您的应用程序都会出现故障。