调查IBM HTTP服务器返回的400 \错误请求错误

时间:2016-12-01 14:42:41

标签: http-status-code-400 bad-request ibmhttpserver

我们正面临一个问题,即我们的IBM HTTP服务器返回“400 Bad Request”错误,我们无法找到原因。

请求是一个SOAP请求,应该由Tibco SOAP服务提供,但请求未到达应用程序(应用程序日志中没有相同的日志) - 并且在HTTP服务器级别出错。

我们使用的HTTP服务器仅作为代理,只是将请求传递给应用程序。

来自访问日志:

  

10.239.12.250 - - [17 / Nov / 2016:10:23:19 +0000]“POST / OnlineCheck HTTP / 1.1”400 - 300“Java1.7.0_40”300/300021637

当我检查错误日志时:

  

[2016年11月17日10:28:19] [错误](70007)指定的超时时间   已过期:proxy:预取请求主体未能[:: 1]:9876   (temp.adv.com)来自10.213.123.12

收到请求后5分钟会返回错误,您可以从日志中看到。

需要注意的一些要点:

错误仅来自一个客户端(多个客户端使用相同的服务),并且它们使用OSB / Weblogic进行负载平衡

这仅发生10-20%的请求,并且是随机的。 Load Balancer再次发送相同的请求(2.5分钟后没有得到任何响应,服务器响应正常)

我想知道是否有任何方法可以捕获错误可能导致的错误? 400 \ Bad Request Error可能是什么原因?

1 个答案:

答案 0 :(得分:1)

错误消息表示mod_proxy等待POST主体,它从未被客户端传输。因此,客户端发送的Content-Length或Transfer-Encoding:chunked无效,导致400状态代码。

您可以取消注释“mod_net_trace”的LoadModule,以记录为这些请求完成的I / O,并查看预期的正文类型并确认它永远不可用。

如果您不信任传输内容的内部视图,您可以使用数据包捕获来确认相同的事情。