【问题标题】:Can a signed Java Applet/Web Start manipulate content in a cross-site IFRAME?已签名的 Java Applet/Web Start 能否操作跨站点 IFRAME 中的内容?
【发布时间】:2010-01-25 04:14:59
【问题描述】:
已签名的 Java Applet 或 Web Start 应用程序是否可以写入不同域下 IFRAME 的 DOM?
它们是已签名的 applet/javaws 是否允许它们忽略浏览器的标准跨浏览器安全性?
如果这确实有效,它在主要浏览器中的支持情况如何?
谢谢!
编辑:
我的动机是向我无法控制的第三方网站添加类似浏览器插件的工具。完全不需要我使用 Java --- 鼓励任何想法或建议。
【问题讨论】:
标签:
java
dom
applet
cross-domain
【解决方案1】:
不,Java,即使是签名的 Java 小程序,也不赋予 JavaScript 权力。
【解决方案2】:
Java 不是 JavaScript,因此 Applet 没有处理 IFrame 传输。
Applet 在 JVM(例如 Sun)中运行,JavaScript 在浏览器 JSEngine(Gecko)中运行
所以,忘记小程序。
如果您考虑浏览器插件,请查看 FireBug,
如果您想要跨浏览脚本,请尝试使用 javascript 标签传输。
【解决方案3】:
对 DOM 的 Applet 操作是通过 LiveConnect 完成的,所以我想浏览器 JavaScript 安全性应该到位并阻止您。当然,你可以绕过它。我不知道该怎么做。
和以往一样,我建议不要签署代码,除非你真的,真的知道你在做什么。
【解决方案4】:
顺便说一句,Java 小程序能够与 javascript 通信,反之亦然。
查看http://www.rgagnon.com/howto.html
JAVA 小程序:
import java.applet.*;
import java.net.*;
public class InJava4 extends Applet{
public void init(){
String msg = "Hello from Java (using javascript alert)";
try {
getAppletContext().showDocument
(new URL("javascript:doAlert(\"" + msg +"\")"));
}
catch (MalformedURLException me) { }
}
}
Javascript 和 HTML
<HTML><HEAD></HEAD><BODY>
<SCRIPT>
function doAlert(s) {
alert(s);
}
</SCRIPT>
<APPLET CODE="InJava4.class"
NAME="myApplet" MAYSCRIPT
HEIGHT=10 WIDTH=10>
</APPLET>
</BODY>
</HTML>