Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Как в модуле rewrite смотре ть параметры переданные методом POST?
- To: nginx-ru@xxxxxxxxx
- Subject: Re: Как в модуле rewrite смотре ть параметры переданные методом POST?
- From: Sergey Shepelev <temotor@xxxxxxxxx>
- Date: Tue, 4 May 2010 21:54:27 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=0zgMdrOLQBgKDRcbhoTj0k5fofgUXJRHP5VgKaaoA04=; b=PACMM9cypXXfT7L7hcdMd5yiIPMGseWF/lxjiSOyeDQ+0eDgRirJcILhi18k6dm23x DkUi3do88tl1il7jN6wJgEQiwivkfKku12xaEruP1wgalU8ozOVHSmEyhSTj6zxO+Att PJAze6GVhCQ/CknPAYZmMTTj4c/MNIk+B23WY=
- 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=Nk7TSfH7Kx6pBA+kq4GmPZV/V5hv1NlNvXv/iblan8M0tVtHcWuc39fP8Gn22F2C4h OYxKIIuX4au0zCLyEC464AO1eQ2UkR3g5AQB7cCBhDAN2xTYw8PkeGq9MbU/Pe30Bxim Px6/WQhDFjQUwViL0BNawNgH+McqHGibnVyRY=
- In-reply-to: <70fb82f4b084f137ae024cff44fe5c1c.NginxMailingListRussian@xxxxxxxxxxxxxxx>
- References: <70fb82f4b084f137ae024cff44fe5c1c.NginxMailingListRussian@xxxxxxxxxxxxxxx>
2010/5/4 vgoncharov <nginx-forum@xxxxxxxx>:
> Всем привет!
>
> Использую nginx/0.7.65 как акселератор для бакенда.
>
> Настроил basic-авторизацию в зависимости от содержимого переменной в
> переменной $args.
>
> Когда параметры передаются методом GET, то все работет как и задумывалось.
>
> Если же те же самые параметры передаются методом POST, то $args пустой. И вся
> моя авторизация по условию перестает правильно работать.
>
> Как в моделе rewrite смотреть параметры переданные методом POST?
>
> Браузер посылает на nginx такие заголовки:
> Content-Type: application/x-www-form-urlencoded; charset=UTF-8
> Content-Length: 132
>
> И такое тело запроса:
> p=000:00:0080053295408811:FLOW_PPR_OUTPUT_R1440731841612176_pg_R_1449731841612176:NO&pg_max_rows=15&pg_min_row=16&pg_rows_fetched=15
>
> Казалось бы, если $args пустая, то $arg_p могла бы быть и заполненной. Обнако
> это не так. Как мне быть? Где посмотреть что передали в POST?
>
>
Тут такая штука, что GET аргументы передаются прямо в строке запроса,
а "POST-аргументы" (технически, на уровне HTTP такого понятия нет)
передаются в теле запроса. Которое nginx может, например, писать на
диск и не держать в памяти. Это почему по-умолчанию просто так из
коробки не работает ожидаемое. Но технические причины никому не
интересны.
Правильно будет либо сделать обработчик на перле, либо написать
маленький бекенд на любом приятном вам языке,
либо (это неправильный способ. Серьёзно.) смотреть переменную
$request_body. В ней будет вот та самая полная строка p=000:00...
Никак не разбитая на токены, просто строка и всё. Вы можете написать
хитрый регексп типа
if ($request_body ~ "^p=\d+") { ... }
Но это, повторю, неправильный способ. Хотя он и завлекает простотой.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|