【发布时间】:2011-01-30 07:55:18
【问题描述】:
我有一个小程序在尝试与服务器通信(在本地主机上运行)时抛出此异常。此问题仅限于 Applet - POJO 客户端能够毫无问题地与完全相同的服务器进行通信。
Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied (java.net
.SocketPermission 127.0.0.1:9999 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
我的 applet.policy 文件的内容是:
grant {
permission java.security.AllPermission;
};
我的问题是我需要在哪些其他地方修改我的安全设置以授予 Applet 更多安全设置?
谢谢。
编辑:进一步调查使我发现这个问题只发生在某些机器上 - 而不是其他机器。因此,可能是机器级别(全局)设置导致了这种情况,而不是特定于应用程序的设置,例如 applet.policy 文件中的设置。
编辑:Another SO question: Socket connection to originating server of an unsigned Java applet
这似乎描述了完全相同的问题,Tom Hawtin - tackline 's answer 提供了原因(发布的一个安全补丁禁止小程序连接到localhost)。牢记这一点,我如何授予小程序安全设置,以便它确实可以在我的机器上运行。还有为什么它可以在其他机器上按原样运行,而我的机器不行?
【问题讨论】:
-
您是在尝试 localhost 还是 127.0.0.1?我相信我在我以前的项目中使用过 localhost,它工作正常
-
@tim_yates 是的,我使用的是“localhost”,它在内部解析为
127.0.0.1。但是如果这就是你的意思,“127.0.0.1”实际上并没有出现在我的代码中。 -
您是否尝试过签署您的小程序 JAR 文件并查看会发生什么?
-
如果您的小程序代码是从 localhost 加载的,应该没有问题。没有必要为这样的事情删除客户端的安全性。
-
@bguiz 是否涉及任何 JavaScript?那有不同的规则。
标签: java security sockets permissions applet