ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


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


  ПРОГРАММЫ 



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












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

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

Re: Разбор POST-запросов


  • To: nginx-ru <nginx-ru@xxxxxxxxx>
  • Subject: Re: Разбор POST-запросов
  • From: Daniel Podolsky <onokonem@xxxxxxxxx>
  • Date: Mon, 8 Feb 2010 19:43:05 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=EbrUkJSw8LFQJ3jSPWPBzMm+cfYMjD+5IDnzj7wl0Jw=; b=aGZ4AfzE6Z31OcjHvuJJRie96kMMldymvaNZBCLom6D2qSZMp0hZTyyISDKP6x8zlp MT8kRs2WSs3L+jYsDp+RD82NS5KhLc6uYZuCz374yP0pMlIaj+GGhCEQ6yZLrzkC7Xgn X+wCBbRjeMp5w5Y3cP914kfPMsyrMtP/2hVYY=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=ddCB5O356mB9RqwfOoWL8HDX8dtege1a1vb+0Ry4NFP1yWAbCqusTdxCVoZahqIo3c r0zRQmkESWbkogQSkxMO4bKBKY0dWC0X1rgjZBG/BguWE0mklogpiiKUbG6VlO4eKGcQ jNNW8M1qB2xA8byuC5UJ8Uz4U1duOjw9BFJRE=
  • In-reply-to: <c3057d0eed223a2d8129ba001ad7cb96.NginxMailingListRussian@xxxxxxxxxxxxxxx>
  • References: <c3057d0eed223a2d8129ba001ad7cb96.NginxMailingListRussian@xxxxxxxxxxxxxxx>

> Скажите, пожалуйста, есть ли возможность выделить интересующие аргументы 
> POST-запроса (nginx/0.6.38)?
Можно получить запрос встроенным перлом, и в нем выделить все, что захочется.

В конфиге:
perl_modules /pathToYourModule;
perl_require YourModule.pm;

location = /postHere
 {
 if ($request_method != POST)
  {
  error_page 345 = @namedLocationToProcessGET;
  return 345;
  }
 perl  YourModule::checkPost;
 }

 В YourModule.pm
package YourModule;

use nginx;

sub checkPost($)
        {
        my $r = shift;

        if (!$r->has_request_body(\&parsePost))
                {
                $r->log_error(0, "Post without body, not good");
                return 400;
                };

        return OK;
        };

sub parseAuth($)
        {
        my $r = shift;
        my $body = $r->request_body || '';
        # Ну и тут уже резвимся, как захотим.
        };

Да, возможен вариант, когда тело ляжет в файл. Можно этого не
допускать, регулируя размер буфера и максимальный размер тела. А
можно, наоборот, этого потребовать, и использовать
$r->request_body_file.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.