使用 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)
如何让 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)