Java 如果使用基本身份验证,小程序将显示登录对话框

Java 如果使用基本身份验证,小程序将显示登录对话框,java,google-chrome,applet,basic-authentication,Java,Google Chrome,Applet,Basic Authentication,我在网页上插入了一个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/MyAppl

我在网页上插入了一个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;
applet=''
appletContainer.innerHTML=applet;
服务器正在使用基本身份验证。当Chrome或Safari(或者更好的说法是JVM)请求MyApplet.jar文件时,会显示“需要身份验证”对话框,这非常烦人

我发现Chrome/Safari(或JVM)由于某些原因没有附加“Authentication:Basic”头来自动获取请求


您知道如何在请求.jar文件时强制附加Authentication:Basic头以避免出现这个额外的登录对话框吗?

实际上,我认为问题可能是您的小程序试图打开与服务器的连接,服务器受到基本验证的保护。如果是这样,您需要在小程序中执行以下操作:

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

否则,只需将.jar文件移动到服务器上允许匿名读取访问的目录。

正如我所看到的,它不是applet身份验证,而是主机/域身份验证,只是因为JVM(观察Oracle标签)本身要求登录;也许这意味着您的html试图从禁止的位置获取jar,或者该路径被误认为是绝对路径;但是如果它是像/plugins/MyApplet.jar这样的绝对值,那么域根在哪里呢?我不太确定,但您是否尝试过在其前缀中添加双点的“archive=“../plugins/MyApplet.jar”这样的路径

我只是想知道“/plugins”文件夹是网络文件夹吗?如果是,问题可能比Java本身更深。可能是域内部网络文件夹访问策略(如无子文件夹访问)或由sys admin控制的内容


作为一种方法,试着将jar放在与html文件相同的文件夹中。也许域安全策略允许您的客户端计算机只使用一个web文件夹

使所述小程序资源不受auth保护?我认为无法实现所要求的功能。如果您使用标准小程序标记或jnlp运行它会怎么样+1,但对于编写applet元素,我会使用。您确定applet的Java代码没有打开到服务器的HTTP连接,并且这不是问题的根源。例如:@palsm4。不,我的applet没有对服务器进行任何调用。我用fiddler检查了请求,发现问题出在GET-request-to-jar中文件。不,我的小程序没有与服务器建立任何连接。获取jar文件的请求会触发上述登录对话框,我在fiddler日志中看到了这一点。好的,那么您需要允许对“插件”进行匿名读取访问。或者将其移动到另一个目录,使用匿名读取访问。Pst和我昨天都说过:使所述小程序资源不受身份验证保护“不,SM4,在我的情况下,允许匿名访问任何文件(包括.jar)不是一个选项。我没有访问服务器的权限,无法配置权限。我的情况与您在回答中描述的相同-我的小程序尝试连接到加载它的servlet。但过了一段时间,我总是得到401错误响应代码。您认为,您的解决方案是否有助于解决我的问题?/plugins/folder与此网站上的其他位置具有相同的权限。无法指定相对路径(../somepath/),因为插件可以出现在多个页面上的不同位置。服务器和客户端计算机都不在域中,并且都具有默认配置,没有策略更改。默认配置是什么?为了进行测试,将jar放在与html相同的位置