簡體   English   中英

未修改WildFly 8.2和304

[英]WildFly 8.2 and 304 Not Modified

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的標頭,但不忽略0的Content-Length和套接字中的左主體,因此在從同一通道進行第二次讀取時會出錯。

我可以通過將response.sendError(304)更改為response.setStatus(304)來解決此問題,但想知道,是否可以將WildFly配置為不在304 Not Modified錯誤上發送消息正文?

從技術上講,2xx和3xx 不是錯誤。 僅在4xx和5xx范圍內的響應代碼是錯誤(分別為客戶端錯誤和服務器錯誤)。 因此,我認為setStatus確實是正確的。

當您告訴服務器您正在發送錯誤但不包括正文時,服務器本身就包含一個錯誤。 這是因為錯誤(4xx和5xx)具有以下要求:

除響應HEAD請求外,服務器應發送一個包含錯誤情況說明以及它是暫時還是永久情況的表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM