只有当我用Javascript (LiveConnect)调用函数时,我才会得到访问错误。
applet调用一个函数postData并显示响应(这很好)。现在,如果我通过applets[]数组(如document.applets[0].postData )从Javascript调用此函数,则将得到套接字/权限错误:未指明的异常: java.security.AccessControlException:访问被拒绝(java.net.SocketPermission 174.132.167.66:80 connect,解析)
相同的函数内部工作很好,但是当从javaScript调用时,我会得到访问控制错误。
以前有人有过这样的问题吗?
发布于 2011-03-21 13:02:52
我最近遇到了同样的问题,尤其是Mac上的Firefox。不过,我在我的街区里使用了SwingUtilities.invokeLater()。
我的工作方式是将invokeLater调用封装在一个AccessController.doPrivileged()块中。例如,如果我的applet上有一个名为someAction()的方法可以从JavaScript调用,我会这样做:
void someAction() {
AccessController.doPrivileged( new PrivilegedAction() {
public Object run() {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
// some privileged action here
}
});
}
});
}这种方法似乎解决了Firefox中的问题。不过,它不会解决Safari中相同的起源问题,例如,如果您想从与applet不同的域中为Javascript提供服务的话。
更新--我要提到的是,不需要invokeLater部件才能工作;这正是我碰巧使用的。
https://stackoverflow.com/questions/5007724
复制相似问题