Request header is too large
我时不时地从 glassfish得到一个 IllegalArgumentException: 。我知道如何解决这个问题 - 需要切换到POST
请求。关于这方面的好文章已经够多了。
但我的问题是我不知道是谁向我发送了这个请求。有没有办法在此错误消息中添加更多详细信息?IP地址就足够了。我猜这个错误发生在我的 servlet 代码被处理之前。因此,我无法自行将 IP 地址添加到错误消息中。
谢谢你的帮助。
Request header is too large
我时不时地从 glassfish得到一个 IllegalArgumentException: 。我知道如何解决这个问题 - 需要切换到POST
请求。关于这方面的好文章已经够多了。
但我的问题是我不知道是谁向我发送了这个请求。有没有办法在此错误消息中添加更多详细信息?IP地址就足够了。我猜这个错误发生在我的 servlet 代码被处理之前。因此,我无法自行将 IP 地址添加到错误消息中。
谢谢你的帮助。
一种方法是使用 aThreadLocal
并将其实例HttpServletRequest
放入请求处理的开始(可能是一个servletFilter
)。
这样,在错误处理程序中,您可以HttpServletRequest
从线程局部变量中获取的实例,并且 - 例如 - 检查发送者的 IP 地址。
在执行 post 或 put 请求时,假设通过线路发送的数据大小没有限制。
大多数 Web 服务器都有这些值的默认配置。默认情况下,max-post-size in glassfish 3
is8192 bytes
和glassfish 2.1
is
4096 bytes
将以下属性添加到下的 http-listener 元素domain.xml
:
<property name="maxPostSize" value="">
如果已经存在,则增加该值。
我将从启用访问日志记录开始:
asadmin set configs.config.server-config.http-service.access-logging-enabled=false
你还应该设置你的日志格式
asadmin configs.config.server-config.http-service.access-log.format=XXXX
希望这有助于追踪问题
绝对在这种情况下,控件甚至不会让应用程序应用一些逻辑来知道远程地址。只有您使用的服务器在日志中提供这些信息。
您使用的任何服务器都会在Web 访问日志中记录请求。
默认情况下,这些日志条目还将具有发出请求的客户端的远程地址。如果不存在,请咨询服务器团队如何配置在 Web 访问日志中记录远程地址。
参考: