Как URL с форматированием ../? - PullRequest
       3

Как URL с форматированием ../?

0 голосов
/ 13 февраля 2020

Я экспериментировал с URL-адресами этого формата:

https://A.com/B/../C

Насколько я вижу, они всегда переформатируются:

https://A.com/B/../C becomes https://A.com/C
https://A.com/B/C/../C/D becomes https://A.com/B/C/D

Является ли это частью URL-адреса? стандарт, или это зависит от браузера или сервера?

Вот пример, который вы можете попробовать: { ссылка }

1 Ответ

1 голос
/ 29 февраля 2020

Да, это часть RF C 3986

В определении пути мы можем прочитать

Сегменты пути " «. и "..", также известный как точечные сегменты, определены для относительной ссылки в иерархии имен путей. Они предназначены для использования в начале ссылки на относительный путь (раздел 4.2) для указания относительного положения в иерархическом дереве имен.

И позже мы можем увидеть, как эти относительные сегменты обрабатываются,

             [...]
              else
                 T.path = merge(Base.path, R.path);
                 T.path = remove_dot_segments(T.path);
              endif;
             [...]

и как относительная часть ../C будет объединена с base https://A.com/B в https://A.com/../C

возвращает строку, состоящую из компонента пути ссылки, добавленного ко всем, кроме последнего сегмента пути базового URI (т. е. исключая любые символы после крайнего правого "/" в базовый путь URI или исключая весь базовый путь URI, если он не содержит символов "/").

и далее, как точки /../ заменят на /

[...]

  • C. если входной буфер начинается с префикса «/../» или «/ ..», где «..» - полный сегмент пути, то замените этот префикс на «/» во входном буфере и удалите последний сегмент и предшествующий ему символ «/» (если есть) из буфера вывода; [...]

Таким образом, мы можем получить окончательный https://A.com/C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...