我遇到过一个问题,即Web应用程序设法在客户端上创建cookie,当客户端提交给Apache时,会导致Apache返回以下内容:
HTTP/1.1 400 Bad Request
Date: Mon, 08 Mar 2010 21:21:21 GMT
Server: Apache/2.2.3 (Red Hat)
Content-Length: 7274
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Size of a request header field exceeds server limit.<br />
<pre>
Cookie: ::: A REALLY LONG COOKIE ::: </pre>
</p>
<hr>
<address>Apache/2.2.3 (Red Hat) Server at www.foobar.com Port 80</address>
</body></html>
在查看问题后,似乎Web应用程序已设法创建一个超过7000个字符的超长cookie。现在,不要问我网络应用程序是如何做到这一点的,我认为浏览器应该防止这种情况发生。我设法提出了一个解决方案,以防止cookie再次失控。
我正在努力解决的问题是,如果每次客户端尝试向Apache提交请求时,如何重置客户端上的大型cookie,Apache会返回400客户端错误?我尝试使用 ErrorDocument 指令,但在达到任何自定义错误处理之前,似乎Apache对请求进行了保释。
答案 0 :(得分:2)
httpd.conf
中的LimitRequestFieldSize配置选项才能继续,所以你可以得到运行服务器端脚本。确保在它们再次开始生长之前尽快清理它们!