【问题标题】:WildFly 8.2 and 304 Not ModifiedWildFly 8.2 和 304 未修改
【发布时间】:2015-07-08 11:08:51
【问题描述】:

RFC 2616 - “所有 1xx(信息)、204(无内容)和 304(未修改)响应不得包含消息正文。”

从 JBoss 5.1 升级到 WildFly 8.2 后,负载均衡器(用 Netty 4.0 编写)坏了。

原因 - WildFly 在 304 错误上发送带有消息正文的响应:

<html><head><title>Error</title></head><body>Not Modified</body></html>

根据 RFC 2616 的 Netty 仅读取 304 的标头,但忽略不为零的 Content-Length 和套接字中的左侧正文,因此我们在第二次从同一通道读取时出错。

我可以通过将 response.sendError(304) 更改为 response.setStatus(304) 来解决这个问题,但想知道,是否可以将 WildFly 配置为在 304 Not Modified 错误时不发送消息正文?

【问题讨论】:

    标签: java http jboss wildfly


    【解决方案1】:

    从技术上讲,2xx 和 3xx 不是 错误。只有 4xx 和 5xx 范围内的响应代码是错误(分别是客户端错误和服务器错误)。所以,我认为setStatus 确实是正确的。

    当您告诉服务器您正在发送错误但不包括正文时,服务器本身包含了一个。这是因为错误(4xx 和 5xx)有这个要求:

    除了响应 HEAD 请求时, 服务器应该发送一个包含解释的表示 错误情况,以及它是暂时的还是永久的 健康)状况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多