Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@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@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.