ПРОЕКТЫ 


  АРХИВ 


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

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



 




Copyright © Lexa Software, 1996-2009.