我们有一个 Web 应用程序,它使用 Java 小程序来操作本地磁盘上的文件。我们开发它已经有一段时间了,我们已经知道所有类型的小程序在现代操作系统和浏览器中可能存在的问题,以及最新的 Java 版本和新的安全限制。
昨天,Apple 推出了带有新 Safari 浏览器 (7.0) 的新 Mac OS 10.9 Mavericks。我在 Safari 7 / Mac OS X 10.9 下测试了我们的 Web 应用程序,只是发现 Safari 7(可能?)阻止了从 Java 小程序访问本地文件。
尽管小程序(使用有效的 Thawte 证书签名,并满足特定于 Java 7u45 的所有安全要求)在不受限制的模式下运行,并具有对本地文件系统的完全访问权限(Java 安全提示说明),但在尝试访问本地文件时,它会捕获 fileNotFoundException :
java.io.FileNotFoundException: /Users/yury/Pictures/Paris 2012/L1050258.jpg (Operation not permitted)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at com.trackntag.a.v.a(Unknown Source)
此外,当从小程序打开 Java 文件打开对话框时,它不显示任何文件,并且文件夹选择器中的文件夹没有任何图标(通常它们应该有图标)。当您遍历到根文件夹时,您可以看到顶级文件夹(bin、cores、dev、home 等),但您无法浏览到它们。
该小程序确实可以在同一台机器(Java 7u45、Mac OS X 10.9)上使用最新的 Firefox 24 for Mac 访问本地文件。与 Safari 6 和 Mac OS X 10.8.5 相同,更不用说各种配置的 Linux 和 Windows 机器:访问本地文件没有问题。
综上所述,我必须得出结论,我们遇到了 Safari 7 特有的问题。
你对这个问题有什么想法吗?任何想法都非常感谢。
干杯,尤里
编辑(答案):在 Safari 7 中有一个新的安全设置:安全/不安全模式(我认为它仅适用于 Java 插件)。您可以允许 Java 插件在单个网站或所有网站的不安全模式下工作。在不安全模式下,小程序可以不受限制地访问本地文件系统。
似乎此安全设置在 Java 自己的安全设置(受限/不受限制的访问)之上起作用。
此设置可通过 Safari 首选项/安全选项卡/Internet 插件获得:管理网站设置(然后选择 Java 插件)。
因此,一旦我已经回答了自己的原始问题,我宁愿改写它:是否可以在不要求用户设置此安全首选项的情况下为特定网站/ URL 设置不安全模式或覆盖安全模式?也许像Apple开发者证书这样的东西会有所帮助?
再次感谢!