| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > applet security problem |
| Автор: SYS 7.5.2003, 15:05 |
| У меня такой вопрос. Я загруjаю апплет. и функция getDocumentBase() вазврашает место апплетА на сервере. может ли апплет читать из файла (.txt), который находится в том же каталоге? И если ест jdk , как настраивать Netscape Comunicator, чтоб@ на открыл апплеты? |
| Автор: DarkDS 7.5.2003, 15:29 |
| С сервера читать нужно? Или в месте, где аплет запущен? Что ты имеешь ввиду под "как настраивать Netscape Comunicator, чтоб@ на открыл апплеты?" чтобы запускал их или чтобы открывал на редактирование? |
| Автор: SYS 7.5.2003, 15:38 |
| net chtob@ zapuskal ix. A txt fail nado otkr@t na servere, tam gde lejit i sam applet. |
| Автор: AntonSaburov 7.5.2003, 15:46 | ||
Просто читать файл через обычный ввод/вывод - невозможно. Апплет ведь фактически запущен на локальной машине. А файл лежит на другой. Для его скачивания надо обращаться к какой-либо службе на сервере, с которого взят апплет - FTP, или к тому же WEB-серверу по HTTP. Т.е. апплет может только создать коннект к серверу и использовать этот коннект для закачки файла на твою локальную машину, где он запущен. В принципе при использовании более расширенной политики безопасности можно закачать файл и с другого хоста, но в любом случае это не будет обычная операция ввода/вывода из/в файл. Иначе никак. |
| Автор: SYS 8.5.2003, 08:57 |
| понятно. но как это можно делать? И если я скачаю этот файл в локальную файл систему, то как апплет может открыт этот файл? Дело в том что, вопроз безопасности сдес стоит не на последном месте. Например как через HTTP скачать содержaние этого файла сразу в апплет, не используя локальную файл систему. |
| Автор: AntonSaburov 8.5.2003, 11:47 | ||||
Апплет может открыть этот файл. Но не просто так. Во-первых, если JAVA у броузера старая или не определена политика безопасности, то апплет к диску обратиться не сможет. Если JAVA номая, то надо определить политику безопасности для возможности записи файла в какую-нибудь директорию. Вообщем в обычной ситуации апплет ничего записать на диск не может.
Открыть сокет прямо в апплете к тому же серверу. Во, нашел на форуме. Помню, чтоуже отвечал. http://forum.vingrad.ru/index.php?act=ST&f=9&t=5302&unread=1&hl=туннел |
| Автор: SYS 9.5.2003, 11:55 |
| u menaj Browser Netscape Comunicator JDK 1.3.1_06 no kak soazdat " политика безопасности" ja n znaju. Mojet pomojete? A cherez URLconection, ja mogu otkr@vat etot txt fail, kotor@i naxodica tam ja, gde i applet? Na primere ja chjo to ne ponjal. Izvinite za takie lamerskie voopros@. |
| Автор: SmaLL 15.5.2003, 16:04 | ||||
Можешь Вот код из работающего апплета
|
| Автор: AntonSaburov 15.5.2003, 19:02 |
| Политика безопасности настраивается очень просто/ Надо отредактировать файл (JAVA_JRE-каталог)\lib\secutiry\java.policy Формат этого фала grant [SignedBy "список имен"] [, CodeBase "URL" { permission имя_класса_права_доступа "имя" "действие" [, SignedBy "список имен"] }; grant ... { }; SignedBy указывает, что надо проверять, кто подписал данный апплет. Если SignedBy отсутствует, то не проверяем. CodeBase указывает URL с которого закачан апплет. Если такой URL есть, то к нему будут применяться правила указанные в файле. Теперь по поводу имя_класса_права_доступа. Это классы? которые фактически проверяют и дают доступ к ресурсам. Все они наследники от класса Permission. Вот их и надо подставлять. Каждый из них отвечает за свои права - так что тут уже надо брать документацию и смотреть. Например для FilePermission надо указывать имя до файла (можно использовать *) и модификаторы через запятую (read, write, delete). Для SocketPermission - "connect", "listen", "accept" Например: grant CodeBase "http://www.trust.com/" { permission java.io.FilePermission "C:\\temp\\sample.txt", "read" } Если апплет загружен с сайта www.trust.com, то он может читать указанный файл. |