0

引用https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success

204 无内容

服务器成功处理了请求并且没有返回任何内容。

这部分是关于不返回任何内容的

  • 由 HTTP 协议强制执行,因此可以相信,如果我们得到 204,那么响应肯定并且肯定有一个空的正文?
  • HTTP 规范要求并被广泛遵守,但并非不可能;所以在实践中,虽然理论上服务器可以发送代码为 204 的主体,但实际上仍然可以假设它不会发生,如果发生这种情况,那么服务器会损坏吗?
  • 理论上 HTTP 规范要求或至少强烈推荐;但在实践中,这是不可靠的,因为有些服务器打破了这一假设——以类似的方式,网络浏览器不能假设它试图获取的网站肯定包含有效的 HTML,并且必须准备好处理相反的情况?

或者,换句话说:如果我得到一个 HTTP 204 响应代码,我可以安全地忽略获取非空正文的可能性,而不必担心数据丢失吗?或者最佳实践是否规定我应该检查正文是否确实是空的,如果不是,那么我不应该默默地丢弃返回的数据?

4

2 回答 2

0

只有您的客户端和服务器。服务器可以是任何东西,任何自定义软件。HTTP 只是文本。某些 HTTP 服务器完全有可能输出 204 状态代码,然后是响应正文。该服务器和您之间没有任何东西可以阻止这种情况的发生。

所以,是的,这是可能的。这将是荒谬的。作为客户,您在收到 204 代码并完全丢弃正文后甚至停止从套接字读取是完全正确的。无论您是想这样做,还是希望在 204 之后期待可能的身体数据,都取决于您。规范方面的“204”表示“没有正文数据”。

于 2019-05-08T13:44:09.687 回答
0

https://greenbytes.de/tech/webdav/rfc7230.html#message.body.length

消息正文的长度由以下之一确定(按优先顺序):

  1. 对 HEAD 请求的任何响应以及任何具有 1xx(信息性)、204(无内容)或 304(未修改)状态代码的响应始终以标头字段之后的第一个空行终止,而不管标头字段存在于消息,因此不能包含消息正文。
于 2019-05-08T19:20:54.767 回答