2010-03-29 7 views
2

웹 응용 프로그램이 클라이언트에서 쿠키를 생성하는 문제를 보았습니다. 클라이언트에서 Apache로 클라이언트를 제출하면 Apache가이를 반환합니다. 다음 :Apache를 400으로 만드는 큰 쿠키를 삭제하는 방법

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> 

문제를 조사한 결과, 웹 응용 프로그램이 7000 자 이상의 매우 긴 쿠키를 생성하는 것으로 나타났습니다. 자, 웹 응용 프로그램이 어떻게 이런 일을 할 수 있었는지 묻지 말아라, 나는 브라우저가 이런 일이 일어나지 않도록 막아야한다고 생각했다. 나는 쿠키가 다시 제어 할 수 없게되는 것을 막기위한 해결책을 찾아 냈습니다.

내가 해결하려고하는 문제는 클라이언트가 Apache에 요청을 제출하려고 할 때마다 Apache가 400 클라이언트 오류를 ​​반환하는 경우 어떻게 클라이언트의 대형 쿠키를 재설정합니까? 나는 ErrorDocument 지시어를 사용해 보았지만, 아파치는 커스텀 에러 핸들링에 도달하기 전에 요청에 실패했다.

+0

질문의 제목을 완곡 어법처럼 들리게 만들지는 않았지만 확실히 나를 웃게 만들었습니다. :-) –

+0

그래, 문구가 조금 어색하고, 그것을 넣어하는 방법을 모르겠다. –

답변

1

오 이런! 아파치의 httpd.conf에있는 LimitRequestFieldSize 구성 옵션을 더 이상 증가 시켜야만 서버 측 스크립트를 실행할 수 있습니다. 다시 자라기 전에 최대한 빨리 쿠키를 정리해야합니다.

+0

LimitRequestFieldSize를 10000으로 올려서 몇 개월 동안 그대로두면 클라이언트의 대부분을 포착 할 수 있습니다. –

관련 문제