ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] LimitRequestBody



On Wed, 13 Feb 2002, Oleg Ilin wrote:

> Hello Уважаемые,
> 
> Хочется ограничить объем траффика, передаваемый
> клиентом на сервер в запросе. (например POST).
> Причем так, чтобы если body, запроса превысило лимит,
> то обрывался коннект с таким клиентом.
> Если возможно не обрывать коннект, то останавливать
> прием и выдавать 413 ошибку, то это было-бы еще лучше.
> 
> Сделал:
> 
> в httd.conf добавил
> LimitRequestBody 204800
> 
> В результате при отправки данных формы
> Получаю ошибку 413, однако trafd показывает:
> 
>      From           Port         To            Port  Proto     Data       All
>  IP Клиента         client    IP Сервера       80      tcp     334011     
>343579
> 
> Приехало вместе со всеми заголовками 343579 байт!
> 
> в error_log'е
> [Wed Feb 13 15:12:11 2002] [error] [client IP Клиента] Request content-length 
>of 324892 is larger than the configured limit of 204800
> 
> Собственно в body передано: 324892 байт.
> 
> Но хочется чтобы на сервер могло придти не более 200Kb.
> Подскажите пожалуйста, как это сделать?

Корректно и в общем случае - никак.

MSIE 4, 5 (и, возможно 6, не проверял) и NN4 считают, что ответ
сервера может придти только после того, как они в него всё залили.
Если же сервер закрывает сокет раньше, чем они зальют, то они это
называют "This page can not be displayed" (MSIE) или network i/o
error (NN4). А вот Mozilla понимает и показывает, что ему вернули.

Что делает Апач ? При получении заголовка с большим телом Апач
выдаёт 413 и делает lingering_close, то есть, shutdown(), и в течение
30 секунд читает через 2-двух секундный select() всё, чего ему дали.
Соответсвенно, всё что ему успеют залить за 30 секунд, он и прочитает.

Что можно сделать ? Уменьшить время ожидания.

Squid, кстати, ничего не читает, а просто говорит 413 и закрывает сокет.

Игорь Сысоев

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.