【问题标题】:Why We Need to Set Content Type of header request为什么我们需要设置标头请求的内容类型
【发布时间】:2017-07-17 18:41:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    内容类型:application/json

    会让服务器知道它应该期望请求正文包含 JSON。而通过:

    内容类型:文本/xml

    将通知服务器在正文中期待 XML。

    RFC7321 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content3.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

    【讨论】:

    • 兄弟 IANA 代表什么?
    • 如果我们不设置任何 content-type 那么会出现什么问题
    • IANA 代表互联网号码分配机构。他们维护 IP 分配、端口号,并且是 DNS 顶级域的全球协调者。
    • 我已更新答案以包含指向 IANA 的链接,并解释如果未设置 Content-Type 会发生什么。
    【解决方案2】:

    如果您不设置 Content-Type,您的应用可能无法运行。

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

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 2011-08-05
      • 2017-04-07
      • 2013-09-09
      • 2013-04-18
      • 2021-12-02
      • 2018-12-03
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多