【问题标题】:Communications permission trouble when calling into Java from javascript从 javascript 调用 Java 时出现通信权限问题
【发布时间】:2011-06-05 21:28:59
【问题描述】:

我在 HTML/Javascript/jquery 页面中嵌入了一个小的图形编辑 Java 小程序。

我在页面上有一个保存按钮,弹出一个调用 Java 函数的 jquery 对话框。

当该函数尝试访问服务器时,它会因权限错误而死。相同的代码用于加载图形对象。

我目前假设从 Javascript 对 Java 的调用不在 applet 上下文中(单独的线程?),因此没有加载它的地方,因此无法与之对话。

有什么方法可以进入正确的上下文?

我希望我可以通过将保存按钮放在 Java 小程序中并使用 Java 对话来获取其他数据来解决这个问题。长期使用 HTML5 画布是我认为的解决方案。

【问题讨论】:

  • 不,我不希望人们需要信任它。

标签: java javascript jquery


【解决方案1】:

JavaScript 的security model -> Java 调用表明,即使是对已签名小程序的调用也被视为不受信任。为避免这种情况,如果您知道正在调用什么方法,则可以使用AccessController.doPrivileged() 允许调用以正确的权限执行。但是,请注意,任何人都可以嵌入您的小程序并使用他们自己的 JavaScript 来调用它,因此此解决方案确实具有您应该仔细考虑的安全后果。

【讨论】:

  • 这有点烦人,因为我已经不信任小程序(服务器端验证和清理),但至少这是一个解释。
【解决方案2】:

您在策略文件 (${user.home}.java.policy) 中设置了权限 - 您可以手动或使用 polictool(在 JDK bin 目录中)进行设置。请参阅Set up a Policy File to Grant the Required Permission。这必须在每台将使用您的小程序的客户端机器上完成。

另一种方法是签署您的小程序。

有关小程序安全性的更多详细信息,请访问wikiJava Plug-in Developer Guide

【讨论】:

    【解决方案3】:

    请务必注意,未签名的小程序只能与提供它的服务器通信。要与不同的服务器通信,需要对小程序进行签名。更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多