Апплет отображает диалог входа в систему, если используется базовая аутентификация - PullRequest
4 голосов
/ 13 сентября 2011

На веб-странице вставлен апплет Java:

applet = '<embed'
    + ' type="application/x-java-applet;version=1.6"'
    + ' pluginspage = "http://www.java.com/en/download/"'
    + ' width="0" height="0"'
    + ' style="position: absolute"'
    + ' archive="/plugins/MyApplet.jar"'
    + ' code="MyTestApplet.class"'
    + '>'

appletContainer.innerHTML = applet;

Сервер использует обычную аутентификацию. Когда Chrome или Safari (или, лучше сказать, JVM) запрашивает файл MyApplet.jar, появляется диалоговое окно «Требуется аутентификация», что очень раздражает.

Authentication Required' dialog is displayed when requesting .jar file

Я обнаружил, что Chrome / Safari (или JVM) по какой-то причине не присоединяет заголовок «Authentication: Basic» к запросу GET автоматически.

Любая идея, как принудительно прикрепить заголовок Authentication: Basic при запросе файла .jar, чтобы избежать этого дополнительного диалогового окна входа в систему?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

На самом деле, я думаю, что проблема может быть в том, что ваш апплет пытается открыть соединение с сервером, сервер защищен базовой аутентификацией.Если это так, вам нужно сделать что-то подобное в вашем апплете:

  // http://www.coderanch.com/how-to/java/AppletsFaq#authentication
  String authorization = Base64Coder.encode(username + ":" + password);
  connection.setRequestProperty("Authorization", "Basic " + authorization);

В противном случае просто переместите файл .jar в каталог на сервере, который разрешает анонимный доступ для чтения.

0 голосов
/ 14 сентября 2011

Как я понимаю, это не аутентификация апплета, как она есть, а хост / домен только потому, что сама JVM (смотрите Oracle lable) запрашивает логин;возможно, это означает, что ваш html пытается получить банку из запрещенного места или путь ошибочно принимается за абсолютный;но если он абсолютный, такой как /plugins/MyApplet.jar, то где же тогда корень домена?Я не совсем уверен, но вы пытались записать путь как "archive =" ../ plugins / MyApplet.jar "с двойными точками в префиксе?

И мне просто интересно, является ли" / plugins "папка в Интернете? Если это проблема, может быть намного глубже, чем сама Java. Это может быть политика доступа к внутренним веб-папкам домена (например, нет доступа к подпапкам) или что-то, что должно контролироваться sys admin.

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

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