我在位于http://localhost:8080/index.html的简单 HTML 页面上插入了一个 Java Applet :
<applet id="applet" code="SomeCode.class" archive="lib.jar" Width="1" Height="1"></applet>
Java Applet 有一个类似于以下代码的方法:
public void PostStuffToServer() {
String server = "http://localhost:8080/PostHandler.ashx";
URL u = new URL(server);
URLConnection con = u.openConnection();
con.setDoOutput(true);
con.getOutputStream().write(stream.toByteArray());
con.connect();
}
当我像这样从 JavaScript 执行小程序代码时:
obj = document.getElementById('applet');
obj.getClipboardImageURL();
我收到以下错误:
访问被拒绝(java.net.SocketPermission 127.0.0.1:8080 连接,解决)
似乎 Java 代码将域localhost解析为其等效的 IP 地址,因此引发了跨域安全限制。当我从http://127.0.0.1:8080/index.html执行相同的代码时,它工作正常。lib.jar 文件已签名。
有没有办法避免这种情况?