【问题标题】:What is the reasoning Chrome resolves double dot in URI?Chrome 解析 URI 中双点的原因是什么?
【发布时间】:2013-12-09 17:32:38
【问题描述】:

今天我遇到了一个有趣的谷歌浏览器行为。

假设我有一个网络应用程序可以让我们查看有关用户的信息:

http://app.com/user/Rok/info

现在假设我们有一个名为.. 的用户。当我们访问他的信息页面时,

http://app.com/user/../info

您可以在开发者工具中看到浏览器向app.com/info 发出请求。

为什么浏览器会这样做?它应该将此决定传递给服务器。

Novadays,URI 不再直接绑定到文件系统。我想知道是否有针对此特定的规范。

【问题讨论】:

  • 不,这不是基于意见的,我在问是否有针对此的规范。请阅读问题。
  • 您说 Chrome 的行为“明显错误”,并且您认为这是“不可接受的”。这属于对 Google 或 Chromium 项目的错误报告,而不是 Stack Overflow 问题。
  • 无论好坏,URL 一直被视为分层路径。删除点段对于解析相对路径和规范化 URL 很重要。
  • 是的,但是浏览器有这样做的理由吗?服务器 - 也许 - 但浏览器?
  • 那你最后做了什么?而且我看不出这种类型的“解决”和“规范化”如何有用......(?!)。我有同样的问题,我无法使用点点链接到样式表文件,因为浏览器(Chrome)似乎正在删除它!这很奇怪,因为完全相同的相对路径适用于导入字体文件和图像!

标签: google-chrome url


【解决方案1】:

我只是想自己解决这个问题,它看起来在 RFC 3986, § 5.2.4 中专门解决了这个问题:

伪代码还引用了remove_dot_segments 例程 解释和删除特殊的 ... 完整路径 来自引用路径的段。这是在路径完成后完成的 从引用中提取,无论路径是否是相对的,在 为了在之前删除任何无效或无关的点段 形成目标 URI。

[…]

请注意,dot-segments 旨在用于 URI 引用 表示相对于基础名称层次结构的标识符 URI。 remove_dot_segments 算法通过以下方式尊重该层次结构 删除多余的点段,而不是将它们视为错误或 让它们被解引用实现误解。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 2012-06-28
  • 1970-01-01
  • 2019-06-21
  • 2017-04-10
  • 2021-06-09
  • 1970-01-01
  • 2012-07-27
相关资源
最近更新 更多