我目前在我的WAR中的web.xml中使用此设置,以确保无论容器是否正确配置,应用程序本身都不会直接通过Web列出文件/文件夹:
<servlet>
<servlet-name>DefaultNoListing</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
....
<servlet-mapping>
<servlet-name>DefaultNoListing</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
问题:在部署到Wildfly / Undertow时,如何做类似的事情,这样每个应用程序都可以确保没有文件夹/文件列表,无论服务器的配置如何?
-D
答案 0 :(得分:4)
作为更新,此功能现已实施,并将成为WildFly 8.0.1的一部分
您可以使用以下配置修改默认的servlet行为:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>io.undertow.servlet.handlers.DefaultServlet</servlet-class>
<init-param>
<param-name>directory-listing</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
这将覆盖默认servlet的配置,并将启用目录列表。 默认情况下,列表已被禁用。
答案 1 :(得分:1)
目前默认的servlet根本不支持在Undertow / WildFly中列出文件夹。
这是我们在实施时遗漏的东西。
我创建https://issues.jboss.org/browse/UNDERTOW-195来实现此目的。
一旦我们实现了它,您就可以像现在一样配置它,只需要类名
io.undertow.servlet.handlers.DefaultServlet