2016-02-26 78 views
1

我想測試一個服務器,看它是否按照下面的定義行事,爲此,我需要構造並向上遊服務器發送無效響應到網關服務器。 HTTP規範說明了關於狀態碼502 - 錯誤網關的以下內容。在HTTP 502中,無效響應的含義是什麼?

的502(錯誤網關)狀態代碼表示該服務器,而 充當網關或代理,接收從在嘗試滿足該請求它訪問的 入站服務器的無效響應。

但究竟是什麼構成了無效的迴應?一個非標準的響應代碼(比如6789之類的一些隨機數)是否被視爲無效響應?或者一個HTTP版本無效的響應?

遇到此this其中說不完整的標頭和響應主體可能會導致502錯誤。服務器如何確定標題或主體是否不完整?更重要的是,是否有可能以編程方式創建這樣的響應(我正在使用Java)?

回答

2

我設法在HTTP規範(RFC7230第3.3.3節)中找到以下內容。

如果沒有傳輸編碼,並用 或者多個Content-Length頭字段具有不同 字段值或具有 無效值的單個Content-Length頭字段接收到消息,則該消息成幀是無效並且收件人必須將其視爲不可恢復的錯誤。如果這是一個 請求消息,服務器必須響應一個400(錯誤請求) 狀態碼,然後關閉連接。如果這是代理收到的響應 消息,則代理必須關閉連接 到服務器,丟棄接收到的響應,並向客戶端發送502(錯誤網關)響應。如果這是用戶代理接收到的響應消息 ,則用戶代理必須關閉與服務器的連接並丟棄接收到的響應。

除此之外,我還注意到當上遊服務器關閉時,Nginx返回502作爲反向代理/負載均衡器。

相關問題