|
17
|
| Crashalot · 技术社区 · 14 年前 |
|
|
1
16
您可以重写SecurityManager使用的默认安全策略文件。 1) 创建文本文件(例如applet.policy) 2) 授予小程序所有权限
3) 使用运行小程序
|
|
|
2
9
我也有同样的问题。通过自签名applet解决了这个问题。。。 使用了以下步骤
只要回答它会问的问题,它就能完成工作 注意:我收到本地读/写文件的错误 |
|
|
3
4
我也有同样的问题!JavaScript调用嵌入在同一文档中的applet的公共方法。这将触发applet从“home”加载一些数据,因此应该打开到加载applet的同一域的连接-这也应该允许未签名的applet没有进一步的特权。 我也只在Safari(5.0.2 for Windows,JRE 1.6.0_22)中发现了这个安全异常。同样的applet在IE和FireFox中运行良好。 我也相信这是Safari的Java沙盒中的一个bug。 编辑: 使用doPrivileged没有帮助,但我找到了解决方法: 如果通过计时器事件将JavaScript调用与请求的执行“分离”,那么Safari在游戏中设置的安全限制将不再禁止执行。详细说明:
一个可能使事情变得更复杂的问题是,在actionPerformed上下文中,只有静态变量是可访问的。如果JavaScript调用包含变量,这些变量必须由最初调用的方法放入staic“buffer”变量中,调度的事件可以从中读取值。 在我的测试中,只有javax.swing.Timer提供了所需的分离,而java.util.Timer不能用于此目的。 |
|
|
4
2
谢谢你的回复。我没有赏金,因为虽然答案都是有用的,但没有一个能完全解决问题。 最终,我通过将数据从applet传递到web页面,然后执行AJAX调用与服务器通信来解决了这个问题。当然,这不是最优雅的解决方案,但迄今已证明是有效的。 试试看,让我知道它是否适合你。 再次感谢! |
|
|
5
0
这是小程序吗?如果是的话,你需要在applet上签名,让它访问一个socket(这似乎是你正在做的…) 有关详细信息,请参见此处: http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html |
|
|
6
0
在Linux上可以工作。
这个
一些评论:
|
|
|
7
0
它显示为一个安全异常,但问题实际上是一个糟糕的URL。如果跟踪堆栈,您将看到有一个格式错误的异常。 这很可能是由于将URI传递到了某个需要URL的地方而导致的。通过LiveConnect API从外观上看。我猜它找不到预期的主机名,而是试图连接到默认的,可能是本地主机。安全管理器不允许这样做,因此出现了安全异常。 在href中,您可以使用URI(例如,href=“/somepath”),因为浏览器会根据页面本身的URL解析该URI以生成完整的URL(例如。, http://example.com/somepath ). 在Java中,您可以使用[适当的URL构造函数][1]来实现这一点。 更新: 啊,我看错了;我以为那是一个堆栈跟踪。
liveconnect曾经有一个bug,它可以访问jar:url并获得任意的套接字连接。对此的修复可能导致从liveconnect线程打开url连接时出现问题。如果在
[1] 以下内容: http://download.oracle.com/javase/6/docs/api/java/net/URL.html#URL(java.net.URL ,java.lang.字符串) |
|
|
8
0
JRE沙盒试图阻止javascript发起的方法调用做有害的事情,但它所做的唯一事情是让程序员的生活更加艰难。 我发现最好的解决方法是构建一个生产者和消费者设计模式事件队列,它实现了javascript发起的调用和实际的“脏工作”之间的松散耦合。 真正糟糕的是,在XP或Win7中运行良好的代码可能会在Vista中引发异常。 |