проблема контроля доступа апплета - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть апплет, который, в свою очередь, подключается к серверу для записи файлов. Когда я пытался подключиться к серверу с помощью localhost: он работает на моей машине (сервер находится на той же машине), но не работает на другой машине.

когда я пытаюсь использовать IP-адрес, он работает не там, где

мой код апплета:

public class dynamicTreeApplet extends JPrefuseApplet {

    private static final long serialVersionUID = 1L;
    public static int i = 1;
    public String dieasenameencode;
    public void init() {

        System.out.println("the value of i is " + i);
        URL url = null;
        //Here dieasesname is important to make the page refresh happen 

        //String dencode = dieasenameencode.trim();
        try {
            //String dieasename = URLEncoder.encode(dencode, "UTF-8");
            // i want this piece of the code to be called 
            url = new URL("http://localhost:8080/docRuleTool/appletRefreshAction.do?dieasename=");
            URLConnection con = url.openConnection();
            con.setDoOutput(true);
            con.setDoInput(true);
            con.setUseCaches(false);
            InputStream ois = con.getInputStream();
            this.setContentPane(dynamicView.demo(ois, "name"));
            ois.close();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (FileNotFoundException f) {
            f.printStackTrace();

        } catch (IOException io) {
            io.printStackTrace();
        }
        ++i;
    }

}

файл политики Java:

grant {
  permission java.net.SocketPermission "*", "accept";
  permission java.net.SocketPermission "*", "connect";
};

моя банка неподписано, и я не хочу, чтобы они также были подписаны с точки зрения сопровождения.

1 Ответ

3 голосов
/ 12 сентября 2011

работает на моей машине (сервер находится на той же машине), но не работает на другой машине

Да, но для апплета, отправляемого с «другой машины», имеет смысл только переписывать «на другую машину». Код выше имеет ..

url = new URL("http://localhost:8080/docRuleTool/appletRefreshAction.do?dieasename=");

Это означает, что апплет, поступающий с другого хоста, пытается записать данные обратно на локальный хост, который, вероятно, не существует. Вместо этого ваш апплет должен сформировать URL, используя что-то более похожее на ..

url = new URL(getDocumentBase(), "/docRuleTool/appletRefreshAction.do?dieasename=");

Если код делает это, он должен иметь возможность оставаться в песочнице.


И, кроме того, файлы политики действительно используются только для целей разработки. Если код требует доверия для реального развертывания, он должен иметь цифровую подпись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...