我无法告诉RFC 2616 HTTP客户端是否应该接受包含Content-Length:0或Transfer-Encoding:chunked标头的204 No Content响应。这些标题似乎打破了一些HTTP客户端和代理,这显然试图读取空的响应主体,但是the spec reads:
- 任何“绝不”包含消息体的响应消息(例如 1xx,204和304的响应和 任何对HEAD请求的响应) 总是被第一个空的终止 标题字段后面的行, 无论实体标头字段如何 出现在消息中。
醇>
对我而言,“无论实体标题字段如何”都意味着客户应该容忍这种情况。 Erlang HTTP library选择了这种解释。但是,lighthttpd和IBM选择了相反的解释 - 服务器不应该为禁止拥有正文的响应包含这些标头。
Web应用程序是否应该从响应中删除这些标头,或者网络基础结构和客户端是否应该容忍204 No Content,304 Not Modified等上的标头?
答案 0 :(得分:6)
根据RFC7230(请参阅http://tools.ietf.org/html/rfc7230#section-3.3.1)在第29页结尾处说明:
服务器不得在任何地方发送Transfer-Encoding标头字段 状态代码为1xx(信息性)或204(无 含量)。
因此,Web应用程序不应该使用响应发送这些标头。
答案 1 :(得分:2)
我不能告诉你什么是正确的,因为我不知道HTTP协议的详细信息。
然而,你必须问自己:
在我看来,应用程序不应该在这种情况下发送这些标题。