谷歌浏览器可以打开本地链接吗?

156

我正在内部网络页面上链接到共享驱动器上的本地文件:

<a href="file:///s:/test.xls"> Test</a>

使用一个名为local link的插件,可以让这个在IE和Firefox中运行。

我该如何在Google Chrome中打开它?


如果您删除 file:/// 部分会发生什么? - Nick Bolton
它在另外两个浏览器中无法工作,我还没有在Chrome中尝试。我现在会尝试。 - Andy
1
似乎你也可以在Chrome中打开本地文件。我有一个Z:驱动器,通过使用file:///Z:/,我可以看到文件夹的内容。 - dawez
如果你右键点击并选择“在新标签页中打开”,你就可以做到。不知道这样行不行... - matt burns
适用于当前 Chromium(32.0.1700.107)的扩展在此处:https://code.google.com/p/locallinks/ - Zane
8个回答

54

出于安全原因,您无法从不是 file:/// 的 HTML 文档链接到 file:///


38
这可能是一个“安全漏洞”,但在某些情况下也提供了必要的功能。Chrome可以让我们有能力为特定的URL启用它,并提供警告和研究来找出如何做到这一点,而不是完全禁用它。 - Arcan.NET
5
我不同意。这将宣传一种不良做法,一旦被广泛采用,就会成为又一个社会工程攻击的手段。 - bytecode77
8
@bytecode77 你说得很有道理。然而,我认为只有在特定情况下才是不好的做法。例如,如果这是在一个有限制用户集合的企业内部网络中,那该怎么办?虽然它可能是个不好的做法,但那些选择滥用该功能的人必须对他们的行为负责,而不是删除一个有用的协议方案,以便没有人可以从中受益(也正确使用它)。 - Rook
1
甚至本地目录中的index.html也不允许访问!这怎么可能是安全的呢?按照这种策略思考,最安全的做法就是根本不使用Chrome。 - user985399
3
我能看到这里解决的安全漏洞。但是,增加白名单功能将是一个很好的特性 - 或者只允许内网页面 - 以便信任的站点可以链接到文件。例如,我们有一个包含指向共享文件的链接的SSRS报告。@Guilherme Amorim提供的替代方法如下,但这将导致用户下载无数份文件而不是在共享上打开它们。 - nonpoliticaltag

27

谢谢,这对我帮助很大。不仅可以让我打开存储在另一台服务器上的文件,而且可以直接在浏览器中打开它们。 - D.Galvez
@D.Galvez 很高兴它对某人有用。 - Guilherme Amorim
这帮了我大忙!!非常感谢。 - AndeeC
Chrome只是一个干扰项。解决方案在于Apache2,通过“虚拟目录”,正如这个答案中所讨论的那样。(我想知道它是否能解决Firefox的问题。) - Rick James
在IE和Firefox中,将映射到虚拟目录的文件直接打开或保存。但是在Chrome中,文件会自动下载。如果文件类型设置为直接打开,则会打开该副本。这是否符合预期? - user25976
显示剩余2条评论

14

就我看到的,以下内容适用于Firefox和Chrome:

1)如果您打开来自远程主机的HTML页面,则file://链接将不会工作,即您的地址栏读取http://someserver.domain,页面包含诸如<a href="file:///S:/sharedfile.txt">之类的链接。

2)如果您从本地主机打开HTML页面,则file://链接起作用,即您的地址栏读取file:///C:/mydir/index.html,页面包含诸如<a href="file:///S:/sharedfile.txt">之类的链接。

对于Internet Explorer,第1点不成立。从远程主机上的Web页面可以使用file://链接语法访问您本地主机上的文件。这被认为是IE中的一个安全漏洞(由谁提出?参考文献?)(在IE8中也存在),因为远程主机可以在未经您允许的情况下访问您计算机上的文件......尽管他们必须有幸得到文件名,但是有很多常见的文件名可能包含个人/私人信息。


13
一份来自远程主机的网页可以访问您本地主机上的文件。对于这种说法,您有什么支持证据?链接文件和访问文件并不是同一件事情,因为远程主机无法读取该文件,也无法确定该文件是否存在。我不知道是否有我不知道的黑客技巧? - styfle
1
对我不起作用。我正在使用 file:/// 在 Chrome 中打开本地文件,但它拒绝加载其他本地文件。 - mcv
使用锚点标签是否可以使用相对路径打开本地机器上的文件? - Protagonist

13

1
谢谢!如果您想在Chrome中从另一种协议访问本地文件,这个扩展真的很有价值。 - Patrick
一个很好的帖子,解释了如何设置这个扩展程序:https://www.alphr.com/browse-and-open-folders-files-chrome/ - AJ AJ
如果我可以亲自检查并确认这个Windows程序没有任何恶意行为,那么我会更加放心地要求我的内部网络用户安装它。 - mm201

6

最受欢迎的答案中提到的LocalLinks扩展对我不起作用(我试图使用file://来打开Windows资源管理器中的目录,而不是文件),因此我寻找了另一种解决方法。我发现这个“在IE中打开”扩展程序是一个很好的解决方法:https://chrome.google.com/webstore/detail/open-in-ie/iajffemldkkhodaedkcpnbpfabiglmdi

这不是一个理想的解决方法,因为用户需要右键单击并选择在IE中打开,而不是直接点击链接,但至少它使链接功能正常。

需要注意的是,在IE10(以及某个更新点之后的IE9)中,您需要将该站点添加到受信任站点列表中(Internet选项>安全>受信任站点)。如果该站点不在受信任站点列表中,则file://链接在IE中也无法工作。


1
我在IE11中看到了相同的行为。您需要将其添加到受信任的站点列表中才能使其正常工作。 - ppant
插件不兼容最新版的Chrome。 - Yannick Smits

0

这并不是一个真正的答案,而是使用Python打开本地链接的一种解决方法。

复制您想要运行的本地链接,然后运行下面的代码(使用快捷方式),它将打开您的链接。

import win32clipboard
import os

win32clipboard.OpenClipboard()
clipboard_data= win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()

os.system("start "+clipboard_data)

0

我刚遇到了同样的问题,并找到了Chrome扩展Open IE
这是唯一适用于我(Chrome V46和V52)的扩展。唯一的缺点是,您需要安装一个额外的程序,也就是说您需要管理员权限。


1
打开IE会打开IE浏览器。为什么不一开始就使用IE呢?这绝对不是一个变通方法。 - Mike
1
因为IE已经过时了,远不如FF或Chrome好用,但仍有一些内部应用程序/网站仍然依赖于IE。 - Stefan

-1

希望这篇文章能帮助其他企业寻找解决方案。在经过一番摸索后,我的解决方案如下:

按照以下链接中的步骤安装旧版浏览器扩展和 GPO 设置:https://support.google.com/chrome/a/answer/3019558?hl=en&ref_topic=3062034

通过 Chrome GPO 配置 Google Chrome -> 老版浏览器支持 -> "打开替代浏览器的网站" 启用旧版浏览器重定向 "file://"。

配置 GPO 以安装扩展程序:https://chrome.google.com/webstore/detail/enable-local-file-links/nikfmfgobenbhmocjaaboihbeocackld,该程序重定向 file:// 链接以绕过 Chrome 的 file:// 链接阻止。

该扩展程序打开链接,然后触发 Google Chrome 在 Internet Explorer 中打开链接。结果是 IE 打开一个窗口,然后为用户打开文件/文件夹,最后 IE 自动关闭。


7
链接会失效。为了使你的答案具有未来性,请在此处发布主要信息。需要翻译的内容已经翻译完毕。 - ZF007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接