HTTP协议错误

时间:2015-01-26 16:01:30

标签: java http proxy network-protocols http-tunneling

我们正在将Java运行到由供应商托管的远程Web服务,该供应商涉及几个中间人。我们的Java代码(托管在IBM WebSphere Application Server上)非常简单,如下所示:

URLConnection connection = url.openConnection();
...
connection.getOutputStream().write(...);

这些计算机由Cisco ACE负载均衡器负载均衡,并且该网络在前往远程Web服务的途中有两个BlueCoat代理。

大部分时间它工作正常,但(平均)每天一次,供应商Web服务收到HTTP CONNECT而不是预期的HTTP POST。这是来自不正确的HTTP CONNECT的访问日志的示例,并且在它下面是典型且正确的HTTP POST:

Mar 3 05:15:07 lon-vm-lb01/lon-vm-lb01 logger[28882]: aaa.bbb.ccc.ddd - - [03/Mar/2014:05:15:04 +0000] host.com "CONNECT host.com:443 HTTP/1.1" 403 13 "-" "Java/1.7.0" "-" 810 358 331
Mar 3 05:26:05 lon-vm-lb01/lon-vm-lb01 logger[28882]: aaa.bbb.ccc.ddd - - [03/Mar/2014:05:26:03 +0000] host.com "POST /url/path HTTP/1.1" 200 1842 "-" "Java/1.7.0" "-" 875645 1229 2114 

我们怀疑代理服务器或负载均衡器,任何人都有在Cisco ACE或BlueCoat上看到这个的经验吗?或者这实际上是一个问题,我们的终端连接突然试图创建一个隧道?这甚至是Java SE支持还是WAS上可能运行的任何东西?

2 个答案:

答案 0 :(得分:0)

它看起来像一个HTTP隧道。

您可以在http://en.wikipedia.org/wiki/HTTP_tunnel

查看

答案 1 :(得分:0)

签名 Frantisek 向我发送了一封电子邮件,其中包含此错误的可能原因,即JRE bug,谢谢!总而言之,原因似乎是重用HTTPS连接。

(现在只剩下让IBM修复WebSphere,然后我们的SP更新他们的英国媒体报道。)