2010-03-23 129 views
2

我有一个未签名的Java applet与同一主机进行交互。每次点击页面中的元素时,applet(这是我无法控制的第三部分applet)应该从URL加载数据。我说应该的,因为对于某些文件,我得到java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission http.agent读取)

java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission http.agent读)

和其他一些正确加载文件。所有文件都可以正确读取并从Web服务器上下载,并且它们是非常简单的文本文件。

我还发现,在某些情况下,先前返回错误的文件现在已加载并继续加载,因此似乎以某种方式涉及缓存。

你们有没有关于这里发生了什么的想法?行为似乎是绝对随机的,我无法对此进行调试。注:我使用这个小程序来执行许多其他“单次镜头”文件访问,并且它从来没有给我任何问题。我唯一明显的区别是,现在我通过一个javascript事件“按需”执行此操作。

可能是什么原因,在小程序的Java或其他地方?

回答

2

这是Java VM中的一个错误。 http://bugs.sun.com/view_bug.do?bug_id=6593830这个问题似乎只发生在一个小程序中。 Java Web Start似乎不受影响。

+0

我得到一个类似的问题与java web开始 - 从只有一些客户端,而不是其他人:'java.lang.securityexception拒绝访问允许的URL子路径外。我试图访问同一台服务器上的内容。 – 2011-11-18 13:45:45

+0

这是一个SecurityException,但它是另一个例外。我没有看到我可以提供任何提示。 – Horcrux7 2011-11-18 18:29:20

+0

好吧,我发现了一个修复java.lang.securityexception的问题 - 正如它的文本提示 - 我将它试图访问的数据移动到jnlp和jar文件所在的目录中(以及它的子目录)。哎呀知道我为什么不被允许首先访问我自己的主机,但嘿! – 2011-11-23 10:26:37

0

小程序已损坏。它试图访问沙箱安全规则所说的属性的值。

向applet的供应商报告此问题,并要求提供错误修复或解决方法。

1

一些httphttps URL处理程序使用http.agent设置User-Agent标题。

处理这个问题的正确方法是将此特定系统属性的副本用于是否授予权限(与许多其他权限一样)。但是,所做的是将它添加到applet和JNLP应用程序的权限中。这意味着如果通过其他机制(例如通过LiveConnect从JavaScript进行调用)加载任何代码,它将不具备权限,并且可能会失败。如果该项目已被缓存,那么不需要编写HTTP头部,因此不需要读取该属性。

相关问题