我已经尝试过这种格式的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
是,它是RFC 3986的一部分
在path definition中我们可以阅读
路径段为“。”和“ ..”(也称为点段)是定义为在路径名层次结构中的相对引用。他们适用于相对路径参考的开头(第4.2节)以指示层次结构内的相对位置名称树。]>
[later我们可以看到如何处理这些相对段,
merged转换为[...] 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路径,则排除该路径任何“ /”字符)。
以及点
/../
如何获得replaced by/
[...]
- C。如果输入缓冲区以“ /../”或“ / ..”开头,其中“ ..”是完整的路径段,然后替换为在输入缓冲区中以“ /”作为前缀,并删除最后一个段及其输出中的前一个“ /”(如果有)缓冲; [...]
所以我们可以得到最终的
/