2011-03-15 24 views
18

在一个内部网站,比方说我要链接到文件上使用UNC共享,网址为:解决方法HREF =“文件:///// ......”在Firefox

\\servername\foldername\filename.rtf 

似乎这样做正确的做法是,像这样的标记:

<a href="file://///servername/foldername/filename.rtf">filename.rtf</a> 

这五个斜线 - 其中两个是协议,一个指示文件系统的根目录,然后两个指示服务器启动名称。

这在IE7中正常工作,但在Firefox 3.6中,只有当html来自本地文件时,它才会起作用。当文件来自Web服务器时,我无法使其工作。链接是“死” - 点击它什么都不做。

在Firefox中有没有解决这个问题的方法?这两个浏览器应该是我现在需要担心的一切。

由于这显然是Firefox的一个功能,而不是一个错误,有人可以解释什么好处是防止这种类型的链接?

+0

是否''filename.rtf工作? – 2011-03-15 20:50:40

+4

这是一个浏览器安全措施。你想让别人的网页在你的电脑后面加载文件吗? – pstanton 2011-03-15 20:52:55

+1

@Brian - 不,href =“// ...”'在Firefox中也不起作用,尽管它在IE中工作。几乎任何在IE中都有效。 ('file://'工作,'file:///'工作,'file:// \\'工作,'//工作,'\\'工作等)。 – hmqcnoesy 2011-03-15 21:43:30

回答

3

事实证明,我是不知道的Firefox有此限制/功能。我可以同情该功能,因为它可以防止用户无意中访问本地文件系统。幸运的是,有一些有用的选择可以在坚持HTTP协议的同时提供类似的用户体验。

一种可以替代的通过UNC路径访问内容是使用WebDAV协议来发布内容。一些内容管理系统(如MS SharePoint)使用WebDAV来提供对文档和页面的访问。至于最终用户体验而言,它的外观和感觉就像访问与UNC路径的网络文件;但是,所有文件交互都是通过HTTP执行的。

这可能需要在你的文件访问理念的适度变化,所以我建议你阅读有关WebDAV协议,配置和许可管理,因为它涉及到特定的服务器技术。

这里有几个链接,如果您有兴趣了解更多有关配置和使用WebDAV少数领导HTTP服务器上可能会有所帮助:

10

像Firefox这样的浏览器拒绝打开文件://链接,当父HTML页面本身使用不同的协议,如http://。

你最好的赌注是你的服务器配置,以提供网络映射文件作为一个网络资源,以便它可以通过HTTP访问:从同一个服务器,而不是//按文件://。

由于目前还不清楚您使用的是哪个网络服务器,因此我无法详细了解如何实现此目的。

+1

我同意。毕竟,这是网络服务器的用武之地。 – 2011-03-15 21:01:15

+2

使用http://提供文档的副本,因此用户不打开实际文件。因此,如果您要链接到您希望用户能够编辑的文档,则应使用file://。 – hmqcnoesy 2011-03-15 21:46:26

+1

如果这是唯一的目的,我会建议看看Google文档。 – BalusC 2011-03-15 22:19:29

1

我不知道这是否会起作用,但给它一个镜头!旧文章,但可能仍然有用。

http://www.techlifeweb.com/firefox/2006/07/how-to-open-file-links-in-firefox-15.html

+0

这需要更改所有网站访问者的浏览器设置。不知道这是OP的想法。 – BalusC 2011-03-15 20:56:29

+0

这就是当你告诉你的IT管理员在他的下一个图像构建中将其烧成firefox时:P – 2011-03-15 20:57:34

+0

我测试了这个,并且能够在Windows Vista中使用Firefox 3.6。不幸的是,我没有办法让用户的机器像这样更新。 – hmqcnoesy 2011-03-17 10:50:01

11

此问题已被询问至少两次,但在发布我自己的(对不起)之前,我无法找到这些帖子:

Open a direct file on the hard drive from firefox (file:///)

Firefox Links to local or network pages do not work

这是答案的所有三个职位摘要:

  • 使用WebDAV   —这对我来说是最好的解决办法,虽然更多地参与比我早预料。
  • 使用http://而不是file://///   —这将提供用户无法编辑和保存的文档的副本。
  • 如上所述在客户端编辑user.js here   —这适用于Firefox 3.6.15中的我,但无法访问客户端计算机,这不是一个解决方案。
  • 在Firefox中,使用约:config,将Security.fileuri.strict_origin_policy设置更改为false   —这对我在3.6.15中不起作用。 [SO]上的其他用户也报告说它不起作用。
  • 使用locallinks Firefox扩展  —这会将Security.fileuri.strict_origin_policy设置为true,并且似乎没有其他效果。
  • 读取服务器端文件并将其作为回复发送  —这与简单配置您的Web服务器使用http://的问题相同。
+0

'security.fileuri.strict_origin_policy = false'也不''user.js' /'prefs.js'更新对FF 26有效(如果用于本地CSS引用) – 2016-03-22 22:31:59

+1

@AndreasDietrich'prefs.js'解决方案[再次运行](http://superuser.com/a/1060550/515869) – ederag 2016-04-02 16:37:23

+0

@ederag thx - 这个反馈应该是非常有价值的 - 我现在正在使用本地运行的HTTP服务器来服务这个文件, FF 26用于测试/开发GWT应用程序(开发模式兼容性/支持原因) – 2016-04-02 23:28:05

5

在Firefox打开File:\\\\\yourFileServer\docs\doc.txt比如你需要打开在Firefox中配置一些选项:

user_pref("capability.policy.policynames", "localfilelinks"); 
user_pref("capability.policy.localfilelinks.sites", "http://yourServer1.companyname.com http://yourServer2.companyname.com"); 
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess"); 
+0

不适用于FF 26(如果用于本地CSS参考) – 2016-03-22 22:29:57

+0

此功能已[恢复](https://bugzilla.mozilla.org/ show_bug.cgi?ID = 995943#C158)。 (在Firefox 45上检查) – ederag 2016-04-02 15:37:45