使用 Unfiltered 和 Jetty 在没有目录浏览的情况下提供静态文件

Serving static files without directory browsing using Unfiltered and Jetty

如何让 unfiltered-jetty 在不允许目录浏览的情况下提供静态文件?

Jetty 有 dirAllowed 设置,但它似乎不容易从 Unfiltered 访问。

这不是一个完整的答案,但我敢打赌您可以通过查看 2 个地方将其组合在一起:
1. 未过滤码头代码
中类型org.eclipse.jetty.server.Server的valunfiltered.jetty.Server.underlying 2. Jetty 8(我认为)wiki 中的 'Configuring a File Server'。也许那个 resource_handler.setDirectoriesListed(true) 电话?

这与使用 Jetty 8 的 Unfiltered 0.8.4 一起工作:

import org.eclipse.jetty.server.handler.{HandlerCollection,ContextHandler}
import org.eclipse.jetty.server.Handler

  def disableDirBrowsing(hc: Array[Handler]) {
    hc.map { h =>
      h match {
        case nested: HandlerCollection => disableDirBrowsing(nested.getHandlers)
        case c: ContextHandler =>
          c.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false")
        case _ => // ignore everything else
      }
    }
  }

如果 srv 是您的未过滤服务器对象 添加上下文后,您现在可以像这样禁用目录浏览:

disableDirBrowsing(srv.underlying.getHandlers)