Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: не корректная обработка POST в IE
Hello!
On Mon, Jan 25, 2010 at 03:38:09PM +0300, Alexandre Kalendarev wrote:
>
> > Делать так:
> >
> > ...
> > rc = ngx_http_read_client_request_body(r, ngx_http_your_body_hander);
> >
> > if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
> > return rc;
> > }
> >
> > return NGX_DONE;
> > }
> > И всю остальную обработку - в ngx_http_your_body_handler().
>
>
> я раньше так и делал, но у меня постоянно возвращало NGX_AGAIN, а мне надо
> обработать POST
Ещё раз:
Из handler'а - вызываем ngx_http_read_client_request_body().
Когда тело запроса будет получено от клиента - позовётся
body_handler(), в нём и следует продолжить работу. Что именно
происходит в промежутках - вас волновать не должно.
В частности, возврат NGX_AGAIN из
ngx_http_read_client_request_body() - вполне нормален, и означает
лишь что тело запроса ещё не получено или получено не полностью.
> > Вау. Из phase позвали body, из body позвали phase, ... Где-то
> > тут надо менять логику.
>
> мне самому этот кусок показался подозрительным, но оказывается стабильно
> работает (но не с IE).
"обычно везёт, если использовать маленькие запросы, быструю
локальную сеть и браузер посылающий заголовки и тело запроса в
одном пакете" != "стабильно работает"
> > Переходим к следующему вопросу нашей программы. Phase handler и
> > content handler - вещи вообще говоря мало совместимые, по крайней
> > мере если имеется ввиду CONTENT_PHASE.
>
> да, у меня CONTENT_PHASE
>
> >Ибо content handler (aka
> > clcf->handler) - он придуман специально для того, чтобы явно
> > задавать обработчик для конкретного location'а (и игнорировать
> > обработчики из content phase).
>
> мне надо повесить обработку на конкретный локейшин. По этому мне
> контент_ханлер подойдет.
Если вам нужна обработка в конкретном location'е, и при этом не
нужен fallback в другие обработчики (именно так работает скажем
модуль proxy) - вам вполне подойдёт clcf->handler. Ставить
обработчик на CONTENT_PHASE при этом не нужно.
Maxim Dounin
> > В определитесь что именно вам нужно, и сделайте один обработчик с
> > вызовом ngx_http_read_client_request_body() как приведено выше.
>
>
> Ok, попробую.
> отпишусь...
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|