../格式的URL如何格式化?

问题描述 投票:0回答:1

我已经尝试过这种格式的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标准的一部分,还是取决于浏览器或服务器?

以下是您可以尝试的示例:https://stackoverflow.com/questions/ask/../ask/../../questions/ask

url url-routing
1个回答
0
投票

是,它是RFC 3986的一部分

path definition中我们可以阅读

路径段为“。”和“ ..”(也称为点段)是定义为在路径名层次结构中的相对引用。他们适用于相对路径参考的开头(第4.2节)以指示层次结构内的相对位置名称树。]​​>

[later我们可以看到如何处理这些相对段,

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

以及相对部分../C如何通过base

merged转换为https://A.com/B来获得https://A.com/../C

返回由引用的路径部分组成的字符串附加到基本URI路径的最后一段以外的所有内容(即,排除基本URI最右边的“ /”之后的任何字符路径,如果不包含整个基本URI路径,则排除该路径任何“ /”字符)。

以及点/../如何获得replaced by /

[...]

  • C。如果输入缓冲区以“ /../”或“ / ..”开头,其中“ ..”是完整的路径段,然后替换为在输入缓冲区中以“ /”作为前缀,并删除最后一个段及其输出中的前一个“ /”(如果有)缓冲; [...]

所以我们可以得到最终的/

© www.soinside.com 2019 - 2024. All rights reserved.