跨浏览器文件 URI 的 3 或 5 个斜线

3 or 5 slashes for cross-browser file URI

我正在 Intranet 中使用 <a href="file:..."> 链接访问本地文件夹。

令我困扰的是为了跨浏览器兼容性,我必须在这些 URI 中写入大量斜杠。

Internet Explorer 11.904.16299.0

   file://server/share/path/to/file ok
  file:///server/share/path/to/file KO
 file:////server/share/path/to/file ok
file://///server/share/path/to/file ok

Edge 41.16299.820.0

   file://server/share/path/to/file ok
  file:///server/share/path/to/file KO
 file:////server/share/path/to/file ok
file://///server/share/path/to/file ok

Firefox 60.0 with Local Filesystem Links Extension

   file://server/share/path/to/file KO
  file:///server/share/path/to/file KO
 file:////server/share/path/to/file KO
file://///server/share/path/to/file ok

当我在 Stack Overflow 或类似网站中寻找答案时,我最终会在这些帖子中找到正确的数量是 3 个斜线。

我写下这个问题并回答它,以防有人像我一样感到困惑。

区分两种类型的 <a href="file:...>" 链接很重要:本地路径和 UNC 路径。

本地路径 URI

这是客户端机器内部可访问文件的路径,因为该文件在其本地存储中,或者因为它可以通过 映射驱动器访问 / 挂载文件夹.

那些 URI 带 3 个斜杠:

  • file:///p:/share/path/to/file
  • file:////mnt/share/path/to/file

第二个示例的第四个斜杠是 UNIX 根 /

UNC 路径 URI

我在问题 file://///server/share/path/to/file 中显示的格式称为 UNC 路径。

这是一条可从客户端计算机通过 内部 URI 访问的路径,如 my.server.com。例如,在 Windows 中,这是当您使用服务器 URI 访问文件时,而不是其映射的驱动器号。

这些 URI 有 5 个斜杠:

  • file://///my.server.com/share/path/to/file

帮助我回答问题的链接:

Firefox Local Filesystem Links Extension 的 "about" 部分也谈到了它: