2017-05-24 65 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​​测试工具时可能会遇到的一种视觉误导,这些工具通常可以很好地打印在一起,作为一条信息,包括状态代码和状态原因文本。