服务器是否可以返回代码为204的正文?

时间:2019-05-08 13:38:30

标签: http httpresponse http-status-code-204

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

  

204没有内容

     

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

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

  • 由HTTP协议强制执行,因此可以信任的是,如果我们收到204,则响应肯定是肯定是空的?
  • HTTP规范所要求的,并且得到了广泛遵守,但并非没有成为不可能;因此,在实践中,虽然服务器理论上可以发送代码为204的正文,但实际上仍可以假定它没有发生,并且如果发生这种情况,则服务器已损坏?
  • 从理论上讲,HTTP规范要求或至少强烈建议这样做;但实际上,由于服务器违反了这一假设,因此不能依靠它-以类似的方式,网络浏览器无法假定它尝试获取的网站肯定包含有效的HTML,并且必须准备好应对相反的情况?

或者,换句话说:如果我正在获取HTTP 204响应代码,是否可以安全地忽略获取非空主体而不担心数据丢失的可能性?还是最佳实践指示我应该检查主体是否确实为空,如果不是,则我不应该静默丢弃返回的数据?

2 个答案:

答案 0 :(得分:0)

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

是的,这是可能的。这是荒谬的。作为客户端,您完全正确,甚至在收到204代码并完全丢弃主体之后甚至停止从套接字读取数据。是要执行此操作,还是要在204决定执行后期望可能的身体数据。规范中的“ 204”表示“没有正文数据”。

答案 1 :(得分:0)

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

  

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

     
      
  1. 任何对HEAD请求的响应以及任何带有1xx(信息性),204(无内容)或304(未修改)状态码的响应都始终由标头字段之后的第一个空行终止,而与标头无关消息中存在的字段,因此不能包含消息正文。
  2.   
相关问题