Экранирование символов в URI

Victor Antonovich v.antonovich at gmail.com
Wed May 27 12:45:02 MSD 2009


Всем добрый день!

Работая с nginx в качестве фронтенда к web java-приложению
(REST-контейнер Jersey внутри Tomcat), столкнулся со следующей
проблемой. Согласно документации, nginx обрабатывает URI, передаваемые
бэкенду, в том числе проводит (де)кодирование percent-encoded
символов. Однако, как выяснилось, часть символов, которые приходят
экранированными, nginx передает бэкенду без экранирования, например,
символ ` (обратный апостроф). REST-контейнеру это категорически не
нравится, и он сразу отдает ошибку 500.
Согласно RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt, пункт 2.4.3.
"Excluded US-ASCII Characters"), данный символ и ряд других должны
экранироваться через percent-encoding, но nginx, похоже, этого не
делает (по крайней мере, в коде функции ngx_escape_uri() эти
unwise-символы забиты в маски как неэкранируемые).

Вопрос, соответственно, простой - это баг или фича? :)

Виктор.


More information about the nginx-ru mailing list