Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Экранирование символов в URI
- To: nginx-ru@xxxxxxxxx
- Subject: Экранирование символов в URI
- From: Victor Antonovich <v.antonovich@xxxxxxxxx>
- Date: Wed, 27 May 2009 12:45:02 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=g/ud6uyKsEhYxXWHGq+XMVvCMBrnbNgaRLNABgkfS0Y=; b=drxVDuL0oJrXDh8LfQbjQo0YOA4lGLRgRVZrsr7ZDIE24vYx/mOVVPyydhJsZ0tsk4 95znpiyebXfvGDFp70BbSU0Oui0j6Xb4ZkwbuSpgQuz/3gSDAFg2E3sxuSqvUZNWLubg uc2y8sQzwBcsKLNDn/Ni4yBC7B5Ud/McYsGEQ=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=qUJBBckpHpGlBGyzts68KCi8fIlUgNyoCJxQbM8jOHdyZV+ZzHnnKaiJtBu3SrFoqV vZ1OLOhxrob8XzFsqy6RwfRQOP182B/dzcKPPcga6uC046iKsgyBYjHIUU8WkivYFb4O VaTZ9F7BIERTIuyjCftQNBpWDE0r8KMXE5J0w=
Всем добрый день!
Работая с 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-символы забиты в маски как неэкранируемые).
Вопрос, соответственно, простой - это баг или фича? :)
Виктор.
|