4

我的 localhost 机器(端口 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">

如果我将最后一个 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");

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

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

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

编辑:另外,我也不能 window.open() 文件 URL。那有什么可能的安全好处?

4

2 回答 2

1
<img src="file:///localhost:8080/C://Users/me/IMG_1000.JPG">
<img src="file:///localhost/C://Users/me//IMG_1000.JPG">

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

<img src="file:///C://Users/me/IMG_1000.JPG">

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

user_pref("capability.policy.localfilelinks.sites", "localhost:8080");

如果页面是从http://localhost:8080/ *加载的,那(可能)应该适用于 file:///c:/* 的东西。

  • 使用http://localhost:8080/ * - 可能是最好的解决方案
  • 使用文件夹并将其全部软链接或硬链接到实际文件,以最大程度地减少磁盘使用和更新问题。
  • 使用文件夹并使用无数工具(rsync 等)中的任何一种进行同步
于 2012-04-24T04:06:02.813 回答
-2
  1. 在您的网站内创建一个新文件夹
    2 复制新文件夹中的所有数据
    3.然后提供指向该文件夹的链接。
于 2012-04-22T18:18:39.303 回答