【问题标题】:java.security.AccessControlException: File accessible thru browser but not within same serverjava.security.AccessControlException:文件可通过浏览器访问,但不在同一服务器内
【发布时间】:2013-05-13 09:00:43
【问题描述】:

所以不要过多重复,请参考serve static image along side java google-enpoint api

正如您从引用的链接中看到的那样,我可以通过 url 查看图像。但是,当我尝试使用与

类似的代码读取文件名时
public void listFilesForFolder(final File folder) {
    for (final File fileEntry : folder.listFiles()) {
        if (fileEntry.isDirectory()) {
            listFilesForFolder(fileEntry);
        } else {
            System.out.println(fileEntry.getName());
        }
    }
}

final File folder = new File("/home/you/Desktop");
listFilesForFolder(folder);

我得到一个安全异常

java.security.AccessControlException: access denied ("java.io.FilePermission" "/myImages" "read")

有人知道解决办法吗?为什么通过浏览器的调用显示图像,而来自服务器本身的调用却引发异常?我觉得这很奇怪。

【问题讨论】:

    标签: java google-app-engine file-io google-cloud-endpoints gae-eclipse-plugin


    【解决方案1】:

    如果您已将文件配置为“静态”资源,它将由一个单独的服务器池提供服务,这些服务器池针对提供静态内容进行了优化。结果是无法从您的应用程序中打开该文件。 “资源”文件可供应用打开和阅读。

    here 已记录在案。

    打开资源时需要使用相对路径。您在上面显示了绝对路径。

    【讨论】:

    • 在本地主机上很容易找到我的静态文件的路径。现在我已经部署了,它不像我期望的那样位于myapi@appspot.gserviceaccount.com/images/willsmith.jpg。有什么想法吗?
    【解决方案2】:

    如果服务器作为服务运行,请确保该服务对您尝试读取的文件夹和文件具有权限。

    【讨论】:

    • 我不明白你的意思。回想一下:我可以通过浏览器访问该文件,但不能从同一服务器中访问,但有问题的文件夹位于 war 目录中。
    • 您在浏览器中用于访问文件的 URL 是什么?另外,您在什么操作系统上运行它以及在什么应用服务器上运行?
    猜你喜欢
    • 2017-06-01
    • 2013-09-28
    • 2014-10-05
    • 2021-05-23
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多