Java 小程序清单 - 允许所有调用方允许的代码库

2022-08-31 15:13:11

从 Java 7u45 开始,如果网页尝试通过 javascript 与它交互,并且该页面未在清单的 Caller-Allowable-Codebase 属性中列出,则小程序将显示警告消息(即使使用受信任的证书签名)。

有关此更改的发行说明:http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html

有关此错误的 Oracle 博客文章:https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

属性描述:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable

我只尝试了通配符(*),但我仍然收到警告。

除了列出它可能运行的所有代码库之外,还有没有办法解决这个问题?

这对我来说是一个问题的原因是,这个小程序在许多不同的机器和网络上运行,但总是在不同位置的内部网上运行。这个小程序还需要与javascript进行通信,因为它与本地USB秤通信,显示结果并与页面交互。

Example of warning message

有问题的小程序:https://github.com/JaggedJax/CIO_Scale


答案 1

我的发现是一样的:

这可以防止 Java 7u21 - 7u40 发出警告:

Manifest-Version: 1.0
Trusted-Library: true

这专门防止 Java 7u45 发出警告:

Manifest-Version: 1.0
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *

在 7u45 中混合两者将不起作用。

现在怎么办?有没有人找到一种方法,允许具有“所有权限”的签名小程序在两个JRE版本中运行而没有警告?

神谕到底怎么了?


答案 2

删除 Trusted-Library 属性似乎是必须的,以使调用方允许的代码库正常工作,不再有警告。但是,这破坏了 Java 7 Update 21 - 40,该代码将调用具有所有权限的已签名小程序中的代码的 JavaScript 代码视为混合代码,如果签名的 JAR 文件未使用 Trusted-Library=true 属性标记,则会引发警告对话框。


推荐