java 8拒绝访问(“java.net.SocketPermission”…)

java 8拒绝访问(“java.net.SocketPermission”…),java,security,sockets,applet,Java,Security,Sockets,Applet,我在一个简单的HTML页面上插入了一个Java小程序: <applet width="100%" height="100%" id="StatApplet" code="stat.applet.StatApplet.class" archive="stat.jar"> <PARAM NAME="_cx" VALUE="25903"> <PARAM NAME="_cy" VALUE="19738"> <param name="fra

我在一个简单的HTML页面上插入了一个Java小程序:

<applet width="100%" height="100%" id="StatApplet" code="stat.applet.StatApplet.class" archive="stat.jar">
    <PARAM NAME="_cx" VALUE="25903">
    <PARAM NAME="_cy" VALUE="19738">
    <param name="frame" value="0">
    <param name="module" value="1">
    <param name="count" value="4">
    <param name="image" value="RSload.gif">
    <param name="boxbgcolor" value="#ffffff">
    <param name="boxmessage" value="Monitor loading">
</applet>
在Java 7 Update 45之前,所有这些都运行良好,但在将VM升级到Java 8 Update 25之后,我遇到了一个安全异常:

java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.0.91:945" "connect,resolve")

在connect()上引发异常。小程序是否可以与加载它的主机进行套接字连接?

确保提供了主机名
applet.getDocumentBase().getHost()

如果您尝试连接到127.0.0.1,但您是从192.168.x.x或10.0.0.x提供服务,那么您将得到一个
AccessControlException

您应该使用与此相关的:

new Socket( applet. getDocumentBase (). getHost (), 4444 )

我正在连接到192.168.0.91,由getCodeBase()返回。getHost(),getDocumentBase()。getHost()也会这样做。感谢Holger,为我指出了该线程(以前没有看到它)。
new Socket( applet. getDocumentBase (). getHost (), 4444 )