http:// localhost:8080/index.htmlにある単純なHTMLページにJavaアプレットを挿入しました。
<applet id="applet" code="SomeCode.class" archive="lib.jar" Width="1" Height="1"></applet>
Javaアプレットには、以下のコードのようなメソッドがあります。
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 connect、resolve)
Javaコードは、ドメインlocalhostを同等のIPアドレスに解決するため、クロスドメインのセキュリティ制限が発生するようです。http://127.0.0.1:8080/index.htmlから同じコードを実行すると、正常に動作します。lib.jarファイルは署名されています。
これを回避する方法はありますか?