如何删除导致Apache为400的大型cookie

时间:2010-03-29 21:30:05

标签: apache cookies lamp

我遇到过一个问题,即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对请求进行了保释。

1 个答案:

答案 0 :(得分:2)

亲爱的,亲爱的!我认为你必须增加Apache httpd.conf中的LimitRequestFieldSize配置选项才能继续,所以你可以得到运行服务器端脚本。确保在它们再次开始生长之前尽快清理它们!