我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述Java applet无法在Safari 7下打开文件(Mac OS X 10.9)相关的知识,希望能为你提供帮助。
我们有一个Web应用程序,它使用java applet来操作本地磁盘上的文件。我们开发它已经有一段时间了,我们已经知道所有类型的applet可能与现代操作系统和浏览器以及最新的Java版本和新的安全限制有关。
【Java applet无法在Safari 7下打开文件(Mac OS X 10.9)】昨天,Apple推出了新的Mac OS 10.9 Mavericks,推出了新的Safari浏览器(7.0)。我在Safari 7 / Mac OS X 10.9下测试了我们的Web应用程序,发现Safari 7(可能是?)阻止从Java applet访问本地文件。
虽然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)
此外,当从applet打开Java文件打开对话框时,它不显示任何文件,文件夹选择器中的文件夹没有任何图标(通常他们应该有它们)。当您遍历到根文件夹时,您可以看到顶级文件夹(bin,cores,dev,home等),但您无法浏览它们。
applet可以在同一台机器上使用最新的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插件在不安全模式下为单个网站或所有站点工作。在不安全模式下,applet将具有对本地文件系统的无限制访问权限。
看来这个安全设置在Java自己的安全设置(受限制/不受限制的访问)之上工作。
此设置可通过Safari首选项/安全选项卡/ Internet插件获得:管理网站设置(然后选择Java插件)。
所以,一旦我已经回答了我自己的原始问题,我宁愿将其改为:是否可以设置不安全模式或覆盖特定网站/ URL的安全模式而无需要求用户设置此安全首选项?也许Apple开发者证书之类的东西会有帮助吗
再次感谢!
答案我今天遇到了与另一个Java应用程序类似的问题。我想您可能需要将此应用添加到此对话框中的“允许以下应用...”列表中(
System Prefs ->
Security &
Privacy ->
Accessibility
):另一答案对于Safari 11:
- 转到Safari Preferences-> Websites-> Plug-ins,然后选择Java
- 在右侧,您可以看到“允许网站使用此插件以及下面的设置”列表
- 现在选择网站
- 按住Option按钮,然后单击三个选项(Ask,Off,On),您将看到另外一个选项'Run in safe mode' - 取消选中此选项。
文章图片
推荐阅读
- 从Safari打开相机APP
- Safari Webapp强制在单击其他链接时打开Safari
- 限制Google API的Android密钥使用
- 如何在没有app包限制的情况下使用map v2 api key()
- 使用Android应用无法在Google云端硬盘上看到PC上传的文件
- 拒绝访问路径'path-name'(Xamarin.Android)
- MVC中的“/.well-known/apple-app-site-association”错误
- 为什么使用sys.path.append(path)而不是sys.path.insert(1,path)()
- Android Studio不兼容的类型