Апплет Java не может открывать файлы в Safari 7 (Mac OS X 10.9)
У нас есть веб-приложение, которое использует Java-апплет для манипулирования файлами на локальном диске. Мы разработали его довольно давно и уже знаем все типы проблем, которые могут возникнуть у апплета с современными ОС и браузерами, а также с последними версиями Java и новыми ограничениями безопасности.
Вчера Apple выпустила свою новую Mac OS 10.9 Mavericks с новым браузером Safari (7.0). Я протестировал наше веб-приложение под Safari 7 / Mac OS X 10.9 просто чтобы обнаружить, что 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 и т. Д.), Но вы не сможете просмотреть их.
Апплет имеет доступ к локальным файлам с последней версией Firefox 24 для 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 / вкладка «Безопасность» / интернет-плагины: управление настройками веб-сайта (затем выберите плагин Java).
Поэтому, когда я уже ответил на свой оригинальный вопрос, я бы лучше перефразировал его: возможно ли установить небезопасный режим или переопределить безопасный режим для определенного веб-сайта / URL-адреса, не прося пользователя установить этот параметр безопасности? Может быть, что-то вроде сертификата разработчика Apple поможет?
Еще раз спасибо!