如何在 Firefox 11 中查看来自 http://localhost 提供的页面的 file:// 图像?

Mic*_*ael 6 html javascript firefox file local

我的本地主机(端口 8080)上运行着一台服务器,它试图为本地文件创建 IMG 标签。但是,这些文件不会出现在 Firefox 11 中。

我最初是使用 Javascript 创建图像标签,但由于失败,我又转而使用 HTML 来尝试直接引用文件的各种方法。以下均无效:

<img src="file:///localhost:8080/C://Users/me/IMG_1000.JPG">
<img src="file:///localhost/C://Users/me//IMG_1000.JPG">
<img src="file:///C://Users/me/IMG_1000.JPG">
Run Code Online (Sandbox Code Playgroud)

如果我将最后一个 URL 直接粘贴到地址栏中,则图像可以正常打开。

我已按照此处的说明进行操作:

http://kb.mozillazine.org/Firefox_:_Issues_:_Links_to_Local_Pages_Don%27t_Work

我尝试过直接修改 user.js 和 prefs.js 以及通过 about:config 查看器修改。

我从“帮助”->“故障排除信息”->“配置文件目录”->“打开包含文件夹”获得了配置文件目录的正确路径。

添加的相关行是:

user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
user_pref("capability.policy.localfilelinks.sites", "localhost:8080");
user_pref("capability.policy.policynames", "localfilelinks");
Run Code Online (Sandbox Code Playgroud)

我最初将 http:// 放在“localhost:8080”中,但 Firefox 删除了它。我也尝试了“http://localhost”和“http://127.0.0.1”,但这些也不起作用。

但是......奇怪的是,即使我从 about:config 输入它们并且可以在 prefs.js 中看到它们,我却无法从 about:config 看到它们!这让我觉得也许 mozillazine 上的信息已经过时了,毕竟它说该信息适用于“Firefox 1.5 及更高版本”,而我正在使用 Firefox 11!

注意:我想使用 file:// 访问的原因是我不想允许任意访问我的计算机上的文件。多解释一下:我有一个数据库接口,访问数据库所需的只是密码。这很好,因为我想允许任何拥有密码的人在我的机器外部访问数据库,但图像文件存在于数据库外部。为了通过服务器提供文件(因为存在的文件是动态的),我需要创建一个新的 CGI,它在数据库中采用某种标识符,但由于用户可以访问数据库,他们可以注入任何文件名他们想。

编辑:另外,我也无法 window.open() 文件 URL。这可能带来什么安全好处?

jes*_*sup 1

<img src="file:///localhost:8080/C://Users/me/IMG_1000.JPG">
<img src="file:///localhost/C://Users/me//IMG_1000.JPG">
Run Code Online (Sandbox Code Playgroud)

如果它是 8080 上的服务器,则不应使用 file:// ——它不是文件。它应该是http://localhost:8080/blah。我不认为它是这样工作的,但第二个(如果它应该工作)将是 file://localhost/c:/* - 注意斜杠的数量。上面的行在应该是 / 的地方多了一个 //

<img src="file:///C://Users/me/IMG_1000.JPG">
Run Code Online (Sandbox Code Playgroud)

现在这是有道理的,尽管由于安全限制,您访问它的能力将受到限制。

user_pref("capability.policy.localfilelinks.sites", "localhost:8080");
Run Code Online (Sandbox Code Playgroud)

如果页面是从http://localhost:8080/ * 加载的,那么(可能)应该可以使用 file:///c:/* 的内容。

  • 使用http://localhost:8080/ * - 可能是最好的解决方案
  • 使用文件夹并将其全部软链接或硬链接到实际文件,以最大限度地减少磁盘使用和更新问题。
  • 使用文件夹并使用多种工具(rsync 等)中的任何一种进行同步