首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小程序安全设置?

小程序安全设置?
EN

Stack Overflow用户
提问于 2012-07-04 14:36:27
回答 1查看 181关注 0票数 0

我正在将一个JFrame转换为一个小程序,并得到一个安全异常:

代码语言:javascript
复制
C:\prv_workspace_8\DungeonWorldAdventure\bin>appletviewer applet.html
java.security.AccessControlException: access denied ("java.net.SocketPermission"
 "www.student.nada.kth.se:80" "connect,resolve")
        at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:366)
        at java.security.AccessController.checkPermission(AccessController.java:
555)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:456)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:203)
        at sun.net.www.http.HttpClient.New(HttpClient.java:290)
        at sun.net.www.http.HttpClient.New(HttpClient.java:306)

它正在尝试从URL读取图片:

代码语言:javascript
复制
// Load an image from the net, making sure it has already been
    // loaded when the method returns
    public Image loadPicture(String imageName) {
        Image im = null;

        // Load the image from the net
        try {
            URL imageSource = new URL(
                    "http://www.student.nada.kth.se/~d99-nro/" + imageName);

            try {
                im = createImage((ImageProducer) imageSource.getContent());
            } catch (IOException e) {
            }

        } catch (MalformedURLException e) {
        }

        // Wait to ensure that the image is loaded
        MediaTracker imageTracker = new MediaTracker(this);
        imageTracker.addImage(im, 0);
        try {
            imageTracker.waitForID(0);
        } catch (InterruptedException e) {
        }

        return im;
    }

你知道我该怎么做吗?我需要一个java.policy文件吗?如果是这样,我如何使这个小程序在网页上工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-04 15:31:47

你知道我该怎么做吗?

需要信任小程序才能跨域读取。不管是这样,还是在允许跨域访问的外部服务器上的特定位置上的文件,我怀疑applet查看器是否足够复杂,能够做出区分,所以最好在网页中测试它。

有关跨域访问的详细信息,请参阅:

  • Next-Generation Java Plug-In: Cross-Domain XML Support
  • Java Doodle: crossdomain.xml Support

我需要java.policyfile吗?

不是的。这在网络上部署是行不通的(不切实际的),所以不值得追求。

我正在将JFrame转换为applet..

使用Java Web Start启动框架可能是一个更好的主意。将应用相同的安全限制,但自由浮动(&可调整大小)框架通常更适合显示图像。它也不需要代码转换,而且通常更容易维护-小应用程序比JWS应用程序造成更多的维护麻烦。

我将使用Java Web Start来实现它。我读到我可以让我的应用程序签名,然后它就可以读取文件了。这不是很简单吗?我看到其他开发人员在让他们的applet加载文件时遇到了问题,然后他们被推荐使用签名applet,也许Java Web start也有类似的东西?

几乎一样。如果在任何启动文件( JNLP,类似于HTML中的applet元素,但具有更多选项)或任何请求扩展权限(在JWS中有3个级别或特权)的扩展(也是JNLP)中引用Jar,则需要对它们进行数字签名。

另一种替代方法是使用JNLP API文件服务从沙箱应用程序访问本地文件系统,但这需要更改代码。这是一个demo. of the file services

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11323621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档