9

我有一个带有 java.net.HttpUrlConnection 发送消息的 tomcat 服务器和 java 客户端。通常一切正常,但是客户端发出的一些请求会以 400 http 错误响应。

问题是tomcat日志上没有显示任何内容。我什至尝试将 .level=fine 和其他日志级别更改,仍然没有显示异常或错误。

我怀疑请求中的编码错误或类似的东西,但tomcat没有给我任何线索。

顺便说一下,网址没问题。我还看到请求到达服务器但没有到达我的 servlet。似乎tomcat收到了消息,宣布它坏了并且没有记录什么是错误的。

任何人都可以想出一种方法来查看 400 原因吗?谢谢

4

3 回答 3

17

我终于想通了——我看到总标头的大小 + 写入 OutputStream 的数据大小——异常高——所以我在 Tomcat HTTP 连接器中定义:

连接器端口="8080" 协议="HTTP 1/1" maxPostSize="10485760" maxHttpHeaderSize="10485760" /

遗憾的是,Tomcat 不只是告诉我这个,我不得不猜测我的 - 我将把它报告为一个错误。

谢谢

于 2013-09-16T08:58:04.880 回答
1

事实上,这也是 Internet Explorer 11 上“http 400 bad request”错误的解决方案。
添加

maxHttpHeaderSize="10485760" maxPostSize="10485760" 

到 Tomcat 的 server.xml 的连接器节点。

似乎我在 IE11 上的 ajax-request (extjs) 使用的请求标头比 Tomcat 6 上的默认 (8192 = 8 KB) 最大 http 标头大小更大?

使用 IE10 和 Chrome 我没有遇到这个问题。

于 2016-09-02T09:18:32.063 回答
1

这是一个非常值得讨论的问题。我在组织的工作中也遇到了同样的问题。我对此一无所知,因为在 catalina.out 或我们的应用程序日志中没有很好的日志记录。从客户端应用程序对在 Tomcat_8 中运行的 API 发出的 Http 调用被服务器拒绝,请求为 400 错误。只有 Tomcat locahost_access 日志通过打印请求的 400 http 状态来记录它。在我增加 http 标头大小后,问题得到了解决。

于 2021-10-01T08:42:23.773 回答