我有一个小图形编辑Java applet嵌入在一个HTML/Javascript/jquery页面。
我在页面上有一个保存按钮,它弹出一个调用Java函数的jquery对话框。
当该函数试图访问服务器时,它会死于权限错误。相同的代码可以加载图形对象。
我目前假设从Javascript对Java的调用不在applet上下文中(单独的线程?),因此没有加载它的位置,因此无法与其通信。
有没有办法进入正确的上下文?
我希望我可以通过在Java applet中放置保存按钮并使用Java对话来获取其他数据来解决这个问题。长期使用HTML5 canvas是我认为的解决方案。
发布于 2011-01-09 06:31:45
JavaScript -> Java调用的security model表示,即使是对签名小程序的调用也会被视为不可信。为了避免这种情况,如果您知道调用的是什么方法,可以使用AccessController.doPrivileged()来允许调用以正确的权限执行。但是,请注意,任何人都可以嵌入您的小程序并使用自己的JavaScript调用它,因此此解决方案确实具有安全后果,您应该仔细考虑。
发布于 2011-01-09 06:35:03
您可以在策略文件(${user.home}.java.policy)中设置权限-您可以手动进行设置,也可以使用策略工具(在JDK bin目录中)进行设置。在将使用您的小程序的每台客户端计算机上,请参阅Set up a Policy File to Grant the Required Permission.This。
另一种方法是给你的applet签名。
有关小程序安全性的更多详细信息,请访问wiki和Java Plug-in Developer Guide。
发布于 2011-01-09 07:52:09
需要注意的是,未签名的applet只能与提供它的服务器进行通信。要与不同的服务器通信,需要对小程序进行签名。更多信息here。
https://stackoverflow.com/questions/4636261
复制相似问题