Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: Ошибка в SSI encoding
> On Thu, Apr 09, 2009 at 11:21:36AM +0400, Илья Винокуров wrote:
>
> > > > Это регулируется уже не RFC1738.
> > > указанный вами RFC разделители для searchpart тоже не регулирует.
> >
> > Как я Вас понял, Андрей, Вы не хотите, чтобы nginx при разборе параметров
> > учитывал и ';'?
> >
> > Это религиозная позиция?
>
> Это позиция здравого смысла. Есть стандарт, которому, к счастью,
> практически все следуют. Вот я сейчас запросил в Firefox'е
> "/page?one=1;two=2", оно в таком виде и пришло в сервер без всяких %XX.
> И как оно должно интепретироваться - как one="1;two=2" или как one=1 и two=2 ?
>
Нда... с RFC1738 я конечно загнул - каюсь и посыпаю голову пеплом.
http://www.w3.org/TR/html401/appendix/notes.html#h-B.2.2
> Вот я сейчас запросил в Firefox'е
> "/page?one=1;two=2", оно в таком виде и пришло в сервер без всяких %XX.
Правильно - FF не знает какой символ Вы используете в качестве разделителя,
поэтому принимает, что разделитель ';' и запощено one=1 и two=2. К тому же ему
пофиг - QUERY_STRING должен разбирать сервер.
Очень хорошо будет, если nginx строку "/page?one=1;two=2" будет разбирать так
же,
как ее интерпретирует бекенд...
Давайте возьмем PHP - у него сознание работает как one="1;two=2"
Давайте возьмем CGI.pm - он работает как one=1 и two=2
И для каждого случая хорошо бы настроить парсилку query_string nginx'а на нужный
разделитель.
Думаю, что в данной ситуации хорошо бы иметь возможность задать в конфигурации
разделитель
QUERY_STRING, например
query_string_separator=[&]
query_string_separator=[;]
query_string_separator=[&;]
Где [] задает множество символов, которые распознаются как разделители.
И про encoding="url" - здесь тоже ситуация не однозначная. Я бы обязательно
кодировал
символы: '?','&',';','=','/', так как эти символы могут ввести в заблуждение
парсер
query_string сервера.
С почтением,
Илья Винокуров.
|