java applet java.security.AccessControlException:访问被拒绝的java.net.SocketPermission

时间:2011-04-06 20:55:26

标签: java security applet

我的朋友给了我一个脚本在我的网站上运行我的世界皮肤,但我一直得到这个错误,我没有任何线索如何去做... =( http://allcitybuilder.com/new/example.html

java.security.AccessControlException: access denied (java.net.SocketPermission www.minecraft.net:80 connect,resolve)
   at java.security.AccessControlContext.checkPermission(Unknown Source)
   at java.security.AccessController.checkPermission(Unknown Source)
   at java.lang.SecurityManager.checkPermission(Unknown Source)
   at java.lang.SecurityManager.checkConnect(Unknown Source)
   at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
   at sun.net.www.http.HttpClient.openServer(Unknown Source)
   at sun.net.www.http.HttpClient.<init>(Unknown Source)
   at sun.net.www.http.HttpClient.New(Unknown Source)
   at sun.net.www.http.HttpClient.New(Unknown Source)
   at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
   at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
   at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
   at net.minecraft.skintest.math.Zombie$1.run(Zombie.java:82)

3 个答案:

答案 0 :(得分:0)

您必须允许Applet连接到资源。

查看sigend Applet教程:http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

答案 1 :(得分:0)

通常,Applet只允许访问它们来自的主机(在您的情况下为allcitybuilder.com)。因此,您必须将文件也放在此主机上(或在那里安装代理),或者您的applet需要其他权限才能获得更多访问权限。

要让applet拥有更多访问权限,需要对其进行数字签名,并且用户需要确认applet加载。

但是没有办法说“我只需要访问minecraft.net”并且用户只授予您此权限(无需手动编辑策略文件),因此它是“全有或全无”。此外,如果用户拒绝,applet可以使用通常的applet权限(在Sun的插件上)运行,也可以不运行(在IcedTea上)。

使用JNLP,您可以获得用户对各个操作的确认,但这仅适用于本地访问,不适用于远程访问。

答案 2 :(得分:0)

最简单的方法可能是将资源复制到您的网站,确保您已获得版权所有者的适当权利。

或者,该网站可能会添加crossdomain.xml文件,以允许访问从非同源网站加载的代码。

可能签署代码以获得对本地计算机的完全访问权限。但是,这需要用户接受风险,编写安全代码是非常困难的。