我的 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。那有什么可能的安全好处?