4

我需要一个小程序来打开一个套接字并与侦听小程序下载到的本地主机(最终用户机器)上的服务器通信。

与我所读到的关于小程序安全性的内容相反,似乎即使签名的小程序也无法打开连接到下载它们的不同主机的套接字(在同一台机器上它工作得很好)

我已经使用 -selfcert 对小程序进行了认证,使用 jarsigner 对其进行了签名,并且仍然,每当它尝试打开到不同主机的套接字时,我得到:

Java.lang.Exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:9999 connect,resolve)

我什至尝试更改 Java 策略文件,尽管使用签名的小程序不需要这样做:

grant codeBase "http://applethost:8080/socket" { permission java.security.AllPermission; permission java.lang.RuntimePermission "usePolicy"; };

sigend 小程序有什么问题,它们可以连接到不同的主机吗?

4

1 回答 1

1

是的,当您加载您的小程序时,如果您选择接受它的证书并信任它,它就会被授予 AllPermission,其中包括 SocketPermission。在连接到加载它的主机之外的主机之前,我已经编写了一个签名的小程序。您可以尝试暂时将您的 java 策略文件更改为

grant {
  permission java.security.AllPermission;
};
  • 查看您的策略文件以查看它是否定义了任何其他 policy.url 位置,也许它们正在干扰。
  • 检查您的浏览器设置是否有 javascript 可能。
  • 确保您接受了小程序的证书,并且它已安装到您的站点证书列表中。
  • 确保您拥有的授权 codeBase 行与您的小程序清单中的代码库相同。
  • 在尝试连接之前,您可以尝试打印出您的小程序拥有的权限列表。
  • 您可以尝试从小程序中以编程方式授予 AllPermission。
于 2009-03-03T22:32:23.397 回答