2013-10-23 113 views
49

我们有一个使用Java applet处理本地磁盘上文件的Web应用程序。我们已经开发了相当长的一段时间,并且我们已经知道所有类型的applet可能会与现代操作系统和浏览器以及最新的Java版本和新的安全限制相关的问题。Java applet无法在Safari 7下打开文件(Mac OS X 10.9)

昨天,苹果公司推出了全新的Mac OS 10.9 Mavericks以及新的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.<init>(FileInputStream.java:146) 
    at com.trackntag.a.v.a(Unknown Source) 

同样来自小程序打开的Java文件打开对话框时,它会显示在文件夹中选择没有文件和文件夹没有任何图标(通常他们应该有他们)。当您回溯到根文件夹时,您可以看到顶层文件夹(bin,cores,dev,home等),但无法浏览它们。

在同一台计算机上(Java 7u45,Mac OS X 10.9),该applet可以访问本地文件并使用最新的Firefox 24 for Mac。与Safari 6和Mac OS X 10.8.5一样,更不用说在各种配置下的Linux和Windows机器了:访问本地文件没有问题。

具有所有上述,我必须得出结论,我们已经遇到了特定的Safari浏览器7

问题你对这个问题的任何想法?任何想法都不胜感激。

干杯, 尤里

EDIT(答):在Safari 7有一个新的安全设置:安全/不安全模式(我认为这是Java插件只)。您可以允许Java插件以不安全模式工作,适用于单个网站或所有网站。在不安全模式下,小程序将无限制地访问本地文件系统。

看起来,此安全设置在Java自己的安全设置(受限制/无限制访问)的基础上工作。

此设置可通过Safari偏好设置/安全选项卡/ Internet插件:管理网站设置(然后选择Java插件)。

因此,一旦我已经回答了我自己的原始问题,我宁愿重新说明它:是否可以设置不安全模式或覆盖特定网站/ URL的安全模式而不要求用户设置此安全偏好?也许像苹果开发人员证书会有所帮助?

再次感谢!

+0

真棒,你编辑点评固定对我来说。感谢您做腿部工作。 –

回答

4

我今天和另一个Java应用程序有类似的问题。我认为您可能需要将您的应用添加到“允许下面的应用...”“列表在此对话框(System Prefs -> Security & Privacy -> Accessibility):

enter image description here

+1

谢谢,这是个好主意,一定会这样。顺便说一句,在我的情况下,原因是在Safari 7特有的新安全设置(我更详细地更新了我的原始问题)。但是,希望如果您的方法可行,它可以覆盖该设置,而无需用户手动更改该安全设置。 – JetLizard

+0

好的 - 我想我可能会误解这个问题,但希望这些信息对未来的其他人有用。 –

+1

OSX 10.8.5上Safari 6.1.1的相似问题。在这种情况下,如果没有“不安全模式”设置,它将不会执行()。非常感谢发布修复! –

2

在Safari中11:

  1. 转到Safari首选项 - > Websites->插件,并选择Java
  2. 在正确的这边你可以看到'允许网站使用这个插件 设置下面'
  3. 现在选择网站
  4. 按和按住Option按钮,然后点击三个选项(Ask,Off,On),你会看到附加选项'以安全模式运行' - 取消选中此选项。

enter image description here

相关问题