首页 > 解决方案 > Jetty静态资源在列出时不尊重文件权限(具体阅读)

问题描述

我有一个简单的 xml 上下文来显示静态文件。服务器加载正常,显示文件的页面按预期加载。问题是权限为 000 的文件仍显示在列表中。如果我单击其中一个文件,我会收到一个 java 堆栈跟踪错误,指出码头没有读取文件的权限(因为它没有)。

有谁知道如何让这些没有读取权限的文件不显示?

我正在使用码头发行版 9.4.34.v20201102。我将 jetty 作为服务运行,并在 /etc/default/jetty 中设置了 JETTY_USER。

这是我在 JETTY_BASE/webapps/static.xml 中的简单上下文

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/</Set>
  <Set name="handler">
    <New class="org.eclipse.jetty.server.handler.ResourceHandler">
      <Set name="resourceBase">/mshr/test/</Set>
      <Set name="directoriesListed">true</Set>
    </New>
  </Set>
</Configure> 

标签: jettyjetty-9

解决方案


Jetty ResourceHandler、ResourceService 或 DefaultServlet 不支持此功能。

在文件列表期间询问文件权限实际上是一件相当昂贵的事情(取决于文件系统)。

这就是 Jetty 不这样做的原因。

如果您有其他感觉,请在https://github.com/eclipse/jetty.project/issues提出请求


推荐阅读