我有一个与同一主机交互的非签名java applet。每次我点击页面中的元素时,applet(我无法控制的第三部分applet)都应该从URL加载数据。我说应该,因为对于某些文件,我得到了
java.security.AccessControlException:拒绝访问(java.util.PropertyPermission http.agent read)
正确加载了其他一些文件。所有文件都可以从Web服务器正确读取和下载,它们是非常简单的文本文件。
我还发现,在某些情况下,以前返回错误的文件现在已加载并继续加载,因此似乎以某种方式涉及缓存。
你们有没有想过这里发生了什么?这种行为似乎是绝对随机的,我无法对此事进行调试。注意:我使用这个applet执行许多其他“单击”文件访问,它从来没有给我任何问题。我唯一明显的区别是现在我通过javascript事件“按需”执行此操作。
在applet的java中或其他任何地方可能是什么原因?
答案 0 :(得分:2)
这是Java VM中的一个错误。 http://bugs.sun.com/view_bug.do?bug_id=6593830此问题似乎只发生在applet上。 Java Web Start似乎没有受到影响。
答案 1 :(得分:1)
某些http
和https
网址处理程序使用http.agent
设置User-Agent
标头。
处理此问题的正确方法是,无论是否授予权限,都可以使此特定系统属性的副本可用(与许多其他人一样)。但是,已经做的是将其添加到applet和JNLP应用程序的权限。这意味着如果通过其他机制加载任何代码(比如通过LiveConnect上的JavaScript调用),它就没有权限,可能会出现故障。如果该项已经缓存,那么就不需要编写HTTP头,因此无需读取该属性。
答案 2 :(得分:0)
applet坏了。它试图访问沙箱安全规则声称它不能的属性的值。
将此报告给applet的供应商,并要求修复错误或解决方法。