【问题标题】:Should Content-Type header be set for 404 and 204 responses?是否应该为 404 和 204 响应设置 Content-Type 标头?
【发布时间】:2019-08-07 16:57:25
【问题描述】:

我计划使用 HTTP HEAD /products/{product_id} 请求作为低带宽方式来确定产品是否存在。

如果是,我打算返回204 No Content。如果没有,我打算返回404 Not Found。

在我的 HTTP 服务中,有一些中间件添加了 Content-Type: application/json。

最后的回应是

HTTP/1.1 204 No Content
Content-Type: application/json
Vary: Origin
Date: Wed, 07 Aug 2019 16:50:08 GMT

所有其他资源都返回 JSON 响应。我应该删除 Content-Type 标头吗?这对于 204 和 404 类型的响应是否重要?

【问题讨论】:

  • 没有内容的响应(例如 204)根据定义不需要内容类型。如果提供,它将被忽略。
  • 在这里使用 HEAD 有点牵强。 HEAD is identical to GET, except that no content is returned。因此,如果您要响应带有内容的 GET 请求,那么按照规范,您还应该为您的 HEAD 响应包含所有相同的标头,包括 Content-Type——只是没有内容。如果您不使用 GET 请求发送任何内容,则 GET 或 HEAD 请求都不需要 Content-Type。

标签: rest http


【解决方案1】:

客户端使用Content-Type 标头来解释内容。如果没有内容(与一般的 HEAD 请求或其他请求的状态码 204 一样),则不需要 Content-Type 标头,因为不需要对(零)内容进行解释。但它也无害,即它会被忽略。

如果您发送带有状态码 404 的内容(HEAD 不允许),那么您还应该发送 Content-Type 标头,如果您不发送内容(即 Content-length: 0),那么您不需要添加这样的标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2015-04-17
    • 2022-06-25
    相关资源
    最近更新 更多