2017-05-24 91 views
1

我通常在Tomcat服務器上部署Java webapps,並使用proxy_ajp通過Apache代理訪問它們。問題是,在我最新的設置中(基本都是相同的),我看到我所有請求中的狀態碼都是重複的(即「狀態碼:200 200」)。我在每個瀏覽器,郵遞員,以及我可能得到的任何狀態代碼中都得到了這一點,並且一切似乎都正常,但我擔心我的設置可能不是最佳狀態。作爲響應的重複狀態碼

雖然我不能找到一個解決方案,我已經縮小問題下到ajp_proxy,因爲如果我改變

ProxyPass/ajp://localhost:8009/ 
ProxyPassReverse/ajp://localhost:8009/ 

有:

ProxyPass/http://localhost:8080/ 
ProxyPassReverse/http://localhost:8080/ 

我得到的只是一個單一的狀態碼爲我的要求,如預期。

我已經搜索了這個問題,我還沒有發現任何東西,甚至與它勉強相關,所以任何信息將非常感激。

服務器信息:

  • Apache的版本:阿帕奇/ 2.4.18(Ubuntu的)
  • Tomcat的版本:Apache的Tomcat的8.5.13

在此先感謝。

回答

0

Tomcat 8.5從響應中刪除了「HTTP狀態原因短語」,因此您將在響應中獲得HTTP 200而不是HTTP 200 OK。您的觀察結果可能來自將狀態代碼複製到狀態原因短語中進行顯示的軟件。

你如何觀察狀態碼?您可能會發現,如果您執行協議跟蹤,則會看到Tomcat/httpd僅發送一個狀態碼。

+1

我正在通過不同的工具觀察狀態碼:Chrome的網絡控制檯,Firebug,Postman甚至[Hurl](https://www.hurl.it),並且在所有這些工具中我都會得到一個雙重狀態碼。 另一方面,我有一些Apache重寫規則(典型的如果http轉到https和類似的),它們工作正常,只有一個響應代碼和原因階段,但是一旦實際通過proxy_ajp從Tomcat獲取頁面,我得到雙重身份代碼,正如你所說,沒有迴應短語,這是完全正確的。 – Skelv

+0

您確定「雙重狀態碼」實際上不是一個(正常)狀態碼,而是恰好與狀態碼相同的文本? –

+1

DOH!我只是用我自己的代碼對我的網站執行了一個請求,以便對其進行調試並查看實際響應,並且您是絕對正確的,我只是在狀態字段中以及狀態文本中獲得狀態代碼。非常感謝。 – Skelv

1

實際上,正如Christopher Schultz指出的那樣,我將狀態碼作爲狀態碼和狀態原因文本。

獲取「雙重」狀態代碼只是使用API​​測試工具時可能會遇到的一種視覺誤導,這些工具通常可以很好地打印在一起,作爲一條信息,包括狀態代碼和狀態原因文本。