Как удалить большой файл cookie, который приводит к Apache до 400 - PullRequest
2 голосов
/ 30 марта 2010

Я столкнулся с проблемой, когда веб-приложению удалось создать cookie на клиенте, что при отправке клиентом в Apache заставляет Apache возвращать следующее:

<code>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 ::: 

Сервер Apache / 2.2.3 (Red Hat) по адресу www.foobar.com Порт 80

После изучения проблемы может показаться, что веб-приложению удалось создать действительно длинный файл cookie длиной более 7000 символов. Теперь не спрашивайте меня, как веб-приложение могло это сделать, у меня сложилось впечатление, что браузеры должны были предотвратить это. Мне удалось придумать решение, чтобы предотвратить повторный выход файлов cookie из-под контроля.

Проблема, которую я пытаюсь решить, состоит в том, как сбросить большой cookie на клиенте, если каждый раз, когда клиент пытается отправить запрос в Apache, Apache возвращает ошибку 400 клиента? Я пытался использовать директиву ErrorDocument , но похоже, что Apache выполняет запрос по запросу до достижения какой-либо пользовательской обработки ошибок.

1 Ответ

2 голосов
/ 30 марта 2010

О, дорогой! Я думаю, вам придется увеличить параметр конфигурации LimitRequestFieldSize в Apache httpd.conf, чтобы пойти дальше, чтобы вы могли перейти к выполнению сценария на стороне сервера. Убедитесь, что он как можно быстрее очищает куки, прежде чем они снова начнут расти!

...