Welcome! Log In Create A New Profile

Advanced

Re: location + rewrite и (де)кодирование URI

Evgeniy Berdnikov
June 19, 2019 07:34PM
On Wed, Jun 19, 2019 at 02:54:10PM +0300, Maxim Dounin wrote:
> On Tue, Jun 18, 2019 at 04:45:13PM +0300, Gena Makhomed wrote:
>
> > On 18.06.2019 15:26, Maxim Dounin wrote:
> >
> > > И снова эксперимент плохой, негодный.
> >
> > Вот полный конфиг тестового сервера:
> >
> > server {
> > listen 8080;
> >
> > location /wiki1/ {
> > rewrite ^/wiki1/(.*) https://$host/$1;
> > }
> >
> > location /wiki2/ {
> > rewrite ^/wiki2/(?<title>.*) https://$host/$title;
> > }
> > }
> >
> > Вот запросы к первому и второму location`у:
> >
> > $ curl -I http://127.0.0.1:8080/wiki1/%D1%82%D0%B5%D1%81%D1%82
> > Location: https://127.0.0.1/%D1%82%D0%B5%D1%81%D1%82
> >
> > $ curl -I http://127.0.0.1:8080/wiki2/%D1%82%D0%B5%D1%81%D1%82
> > Location: https://127.0.0.1/тест
> >
> > Первый и второй location отличаются между собой только тем,
> > что в первом используется неименованное выделение $1,
> > а во втором - именованное выделение $title.
> >
> > И в то же время получаем такие разные результаты. Почему так?
>
> Потому что подстановка $1 делается из раскодированного URI
> запроса, и nginx знает, что данные в ней следует экранировать. А
> $title - произвольная переменная, и как и любая произвольная
> переменная - подставляется в предположении, что данные в ней
> корректно экранированы.

Выглядит крайне непоследовательно (а если отбросить политкорректность,
так это просто вынос мозга).

IMHO, лучше было бы принять соглашение, что rewrite работает на уровне
раскодированных URI и его результат подлежит кодированию.
Для вставки уже кодированных строк понадобится функция декодирования,
зато схема будет простой и предельно ясной.
--
Eugene Berdnikov
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

location + rewrite и (де)кодирование URI

Gena Makhomed June 17, 2019 11:32PM

Re: location + rewrite и (де)кодирование URI

Maxim Dounin June 18, 2019 04:28AM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 18, 2019 06:28AM

Re: location + rewrite и (де)кодирование URI

Maxim Dounin June 18, 2019 07:10AM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 18, 2019 08:14AM

Re: location + rewrite и (де)кодирование URI

Maxim Dounin June 18, 2019 08:28AM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 18, 2019 09:46AM

Re: location + rewrite и (де)кодирование URI

Maxim Dounin June 19, 2019 07:58AM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 19, 2019 09:48AM

Re: location + rewrite и (де)кодирование URI

Evgeniy Berdnikov June 19, 2019 07:34PM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 20, 2019 12:26AM

Re: location + rewrite и (де)кодирование URI

Evgeniy Berdnikov June 20, 2019 03:56AM

Re: location + rewrite и (де)кодирование URI

Gena Makhomed June 20, 2019 04:44AM

Re: location + rewrite и (де)кодирование URI

Evgeniy Berdnikov June 20, 2019 05:30AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 298
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready