为啥我的小程序不请求我的许可,而是抛出 AccessControlException?

Posted

技术标签:

【中文标题】为啥我的小程序不请求我的许可,而是抛出 AccessControlException?【英文标题】:Why doesn't my applet asks me for permission, instead throws an AccessControlException?为什么我的小程序不请求我的许可,而是抛出 AccessControlException? 【发布时间】:2011-04-05 12:36:27 【问题描述】:

为什么当我在本地主机上打开带有它的 html 页面时,我的 Java Applet 没有询问我的启动权限?

更重要的是,小程序启动但它不能做任何事情。它的职责之一是连接网页。但事实并非如此。在控制台中我可以阅读:

java.security.AccessControlException: 访问被拒绝 (java.net.SocketPermission www.onet.pl:80 connect,resolve)

我猜我的 Java 的安全设置有问题。

【问题讨论】:

“同源”策略意味着不受信任的代码只能访问它来自的主机(除非目标主机包含适当的crossdomain.xml 文件)。 【参考方案1】:

自从我编写上一个小程序以来已经有一段时间了,但我认为您可能需要对您的 jar 进行签名。

【讨论】:

不,你误解了我的意思。我希望我的小程序像网络上的任何其他小程序一样工作。当 Java 询问我的许可并启动小程序时,我单击“运行”。但在我的情况下,当我尝试从我的浏览器中的 localhost 启动时,Java 不会请求我的许可。 @Leez:我想他理解你的要求。除非您的小程序已签名,否则您不能让它请求额外的权限!【参考方案2】:

不受信任(即未签名)小程序的一般策略是仅允许(网络方式)连接到加载它们的服务器。对于从文件系统本地加载的小程序,这意味着它们可以连接本地主机。

仅当小程序已签名(但如果没有特殊的安全策略文件,则用户对所有内容都授予权限)或小程序使用 JNLP 功能请求某些访问权限(但这仅用于本地访问)- 为此,您需要最新的插件(1.6.0_10 或更高版本)。

正如 Tom 提到的,远程服务器可以允许来自其他站点的小程序(以及其他动态 Web 内容,如 javascript、Flash 等)使用cross domain policy file 访问他的服务器。不过,我不确定 Java 插件的哪个版本实现了这一点。

【讨论】:

以上是关于为啥我的小程序不请求我的许可,而是抛出 AccessControlException?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 应用程序不向防火墙请求许可

为啥我的 asp.net 应用程序抛出 ThreadAbortException?

为啥mysql PDO不会在失败时抛出错误[重复]

为啥 Android Geocoder 会抛出“服务不可用”异常?

为啥 Koin 在我的 KMM 应用程序中抛出“未捕获的 Kotlin 异常:kotlin.native.IncorrectDereferenceException”?

为啥我的微信无法打开小程序了呢?