从Java 7u45开始,如果网页试图通过javascript与applet交互,并且该页面没有列在清单的Caller-Allowable-Codebase属性中,applet将显示一条警告消息(即使用可信证书签名)。
有关此更改的发行说明: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
我只尝试了一个通配符(*),但仍然收到警告。
除了列出它可能运行的所有代码库之外,还有其他方法可以解决这个问题吗?
这对我来说是一个问题的原因是,这个小程序运行在许多不同的机器和网络上,但总是在不同位置的内部网上。这个applet还需要与javascript通信,因为它与本地USB scales通信,并显示结果并与页面交互。
有问题的小应用程序:https://github.com/JaggedJax/CIO_Scale
发布于 2013-10-16 16:53:35
移除Trusted-Library属性似乎是让Caller-Allowable-Codebase正常工作的强制性要求,没有更多的警告。然而,这破坏了Java7Update21- 40,后者将调用以所有权限运行的签名小程序中的代码的JavaScript代码视为混合代码,如果签名的JAR文件没有使用Trusted-Library=true属性标记,则会引发警告对话框。
发布于 2013-10-16 17:56:22
我的发现是一样的:
这可以防止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版本中运行具有“所有权限”的签名小程序而不出现警告?
甲骨文到底怎么了?
发布于 2013-10-21 17:11:44
根据oracle的博客文章,这个问题将在未来的版本中得到修复:
https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and
他们认识到错误“这两个属性应该协同工作以支持不同版本的客户端安装”。但就目前而言,他们的解决方案是:“目前的解决方案是倾向于使用Caller-Allowable-Codebase而不是旧的Trusted-Library调用。”
https://stackoverflow.com/questions/19393826
复制相似问题