我们有一个Web应用程序,它使用Java applet来操作本地磁盘上的文件。我们开发了一段时间,我们已经知道一个小程序可能与现代OS和浏览器和最新的Java版本和新的安全限制的问题的所有类型。
昨天苹果推出了新的Mac OS 10.9小牛与新的Safari浏览器(7.0)。我测试我们的网络应用程序在Safari 7 / Mac OS X 10.9只是为了发现Safari 7(可能?)阻止访问本地文件从Java小程序。
虽然applet(使用有效的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.(FileInputStream.java:146)
at com.trackntag.a.v.a(Unknown Source)
此外,当从小程序打开Java文件打开对话框时,它不显示文件,文件夹选择器中的文件夹没有任何图标(通常,他们应该有)。当您遍历回根文件夹时,您可以看到顶级文件夹(bin,核心,dev,home等),但不能浏览到它们。
小程序确实可以访问本地文件与最新的Firefox 24 for Mac,在同一台机器(Java 7u45,Mac OS X 10.9)。与Safari 6和Mac OS X 10.8.5相同,更不用说Linux和Windows机器在各种配置:没有访问本地文件的问题。
有了以上所有,我必须得出结论,我们遇到了特定于Safari 7的问题。
你对这个问题有什么想法吗?任何想法都非常感谢。
干杯,
尤里
编辑(答案):在Safari 7中有一个新的安全设置:安全/不安全模式(我认为它只适用于Java插件)。您可以允许Java插件在不安全模式下为单个网站或所有网站工作。在不安全模式下,小程序将不受限制地访问本地文件系统。
看来,此安全设置在Java自己的安全设置(受限/不受限访问)上工作。
此设置可通过Safari首选项/安全选项卡/ Internet插件:管理网站设置(然后选择Java插件)。
所以一旦我已经回答了我自己的原始问题,我宁愿改写一下:是否可以设置不安全模式或覆盖特定网站/ URL的安全模式,而不要求用户设置此安全首选项?也许像苹果开发人员证书会有所帮助?
再次感谢!