Welcome! Log In Create A New Profile

Advanced

Re: не корректная обработка POST в IE

Maxim Dounin
January 25, 2010 07:12AM
Hello!

On Mon, Jan 25, 2010 at 01:16:00PM +0300, Alexandre Kalendarev wrote:

>
> >
> > > Сделал все по советам Валерия Холодкова,
> > > http://forum.nginx.org/read.php?21,26678,26955#msg-26955
> > >
> > > все отлично работает, но вот POST от IE не обрабатывается
> > > в какую сторону копать?
>
> судя по логам в IE не вызвался body_handler
>
>
> // хандленр фазы
> ngx_http_memcacheset_phase_handler( ngx_http_request_t *r ){
> ngx_init_t rc=NGX_OK;
>
> if(r->request_body == NULL) {
> rc = ngx_http_read_client_request_body(r, ngx_http_body_handler);
>
> if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
> return rc;
> }
>
> return NGX_DONE;
> }
>
> if(r->request_body->rest) {
> return NGX_DONE;
> }
>
> return rc;
> } // end phase handler

А зачем вы полезли на низкий уровень? Тем более - если не
понимаете как оно работает?

Делать так:

...
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_http_memcacheset_body_handler( ngx_http_request_t *r ){
>
> ngx_int_t rc;
>
> rc = ngx_http_memcacheset_phase_handler(r);

Вау. Из phase позвали body, из body позвали phase, ... Где-то
тут надо менять логику.

>
> if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
> ngx_http_finalize_request(r, rc);
> }
>
> ngx_http_finalize_request(r, 0);
>
> }
>
>
> // контент хандлер
> ngx_http_memcacheset_handler( ngx_http_request_t *r ){

Переходим к следующему вопросу нашей программы. Phase handler и
content handler - вещи вообще говоря мало совместимые, по крайней
мере если имеется ввиду CONTENT_PHASE. Ибо content handler (aka
clcf->handler) - он придуман специально для того, чтобы явно
задавать обработчик для конкретного location'а (и игнорировать
обработчики из content phase).

В определитесь что именно вам нужно, и сделайте один обработчик с
вызовом ngx_http_read_client_request_body() как приведено выше.

>
> .....
>
> r->request_body_in_file_only = 0;
> r->request_body_in_single_buf=1;
>
> rc = ngx_http_read_client_request_body( r, ngx_http_memcacheset_body_handler);
>
> //****************************
> ///// IE возвращает NGX_AGAIN
>
> }
>
> как это обрабатывать?

См. выше.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

не корректная обработка POST в IE

akalend January 25, 2010 04:04AM

Re: не корректная обработка POST в IE

akalend January 25, 2010 05:02AM

Re[2]: не корректная обработка POST в IE

akalend January 25, 2010 05:18AM

Re: не корректная обработка POST в IE

Maxim Dounin January 25, 2010 07:12AM

Re[2]: не корректная обработка POST в IE

akalend January 25, 2010 07:40AM

Re: Re[2]: не корректная обработка POST в IE

Dmitry Dedukhin January 25, 2010 08:02AM

Re: не корректная обработка POST в IE

Maxim Dounin January 25, 2010 08:18AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 99
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready