【问题标题】:What Content-Type should a 204 No Response use?204 无响应应该使用什么 Content-Type?
【发布时间】:2014-01-28 13:01:38
【问题描述】:

在构建 RESTful HTTP 服务时,如果给出 204 No Content 的 Response(例如,在 Consumer 发出 DELETE 请求后),Response 应该包含什么 Content-Type?

应该省略吗? 是否有首选的内容类型? 它应该是对同一资源的 GET 请求的相同 Content-Type 吗? 没关系吗?

【问题讨论】:

标签: http rest


【解决方案1】:

当你有内容时你有Content-Type,即使那样它也是可选的:

任何包含实体主体的 HTTP/1.1 消息都应包含定义该主体的媒体类型的 Content-Type 标头字段。

(来自RFC2616, §7.2.1,请注意使用SHOULD)。

既然没有内容,那么就没有理由指定Content-Type 标头。

【讨论】:

【解决方案2】:

不过,这个故事还有更多内容,它涉及现实世界(浏览器)何时与理论世界(规范)相遇。似乎 Firefox(我写这篇文章时版本为 38)有一个错误,如果没有内容类型标头,即使响应代码为 204(无内容),浏览器也会尝试将内容解析为 xml。见https://bugzilla.mozilla.org/show_bug.cgi?id=521301

因此,虽然内容类型标头在没有内容时没有多大意义(并且 204 上不得有内容),但无论如何返回一些标头似乎是有意义的。而且我看不出这会违反规范。

【讨论】:

  • 该错误现在似乎已修复。
  • 感谢您的更新。虽然我确实注意到他们说“XHR 的 responseXML 将为空,并且解析失败将被简单地记录到 Web 控制台。”所以我们仍然会创建控制台喷...我会坚持/仍然返回 Content-Type 标头。
  • 当浏览器获取响应时似乎不会发生错误,但是当浏览器尝试使用responseXML 获取 XML 时。如果是这样,我想知道它是否甚至是一个错误。
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 2019-05-23
  • 1970-01-01
  • 2022-01-03
  • 2019-03-03
  • 2021-10-01
  • 2020-10-05
  • 1970-01-01
相关资源
最近更新 更多