Re[2]: Ошибка в SSI encoding

Илья Винокуров ilvin at mail.ru
Thu Apr 9 13:00:59 MSD 2009



> 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 сервера.

С почтением,
  Илья Винокуров.





More information about the nginx-ru mailing list