【问题标题】:How do I prevent directory listing in Jetty?如何防止在 Jetty 中列出目录?
【发布时间】:2016-03-16 17:18:46
【问题描述】:

基本上我有这个码头服务器在我的本地运行,在根目录 webapp/ 下有一堆文件夹/文件。 目前,只需在浏览器中输入http://localhost:8080/server-name/ 即可访问它们,如下所示:

显然,当用户进入这个根目录时,它看起来很丑陋,所以我想知道是否可以阻止这个页面或用一些友好的消息来掩盖它。

到目前为止,我已经通过在 web.xml 中添加安全约束来使用这种方法:

    <security-constraint>
    <web-resource-collection>
        <web-resource-name>precluded methods</web-resource-name>
        <url-pattern>/css/*</url-pattern>
        <url-pattern>/font/*</url-pattern>
        <url-pattern>/img/*</url-pattern>
        <url-pattern>/libs/*</url-pattern>
        <url-pattern>/mock/*</url-pattern>          
        <url-pattern>/modules/*</url-pattern>
        <url-pattern>/subpage/*</url-pattern>
        <url-pattern>/util/*</url-pattern>          
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

但显然它会阻止用户对上述 jsp/文件夹的实际访问,这当然不是我想要的。 那么是否可以简单地阻止/屏蔽用户的页面而没有任何其他影响?

【问题讨论】:

    标签: java jetty block


    【解决方案1】:

    你能编辑你的web.xml吗?

    如果是肯定的,添加这个sn-p

    <init-param>
      <param-name>dirAllowed</param-name>
      <param-value>false</param-value>
    </init-param>
    

    【讨论】:

    • 注意:sn-p 属于默认的servlet配置。
    • @JoakimErdfelt,是的,你是对的。我忘了提。 OP,请记住此信息。
    • 感谢两位的提示。所以我感觉到我正在使用的 servlet 类 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 不能使用这个对吗?我查看了 api 并没有找到名为 dirAllowed 的字段...
    • 尝试将dirAllowed替换为listings
    【解决方案2】:

    就像@josivan 和@Joakim 所说,我需要做的就是添加一个默认的servlet 并将标志设置为false

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
        <init-param>
            <param-name>dirAllowed</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    

    在这里发布详细的答案。

    【讨论】:

      猜你喜欢
      • 2013-06-09
      • 1970-01-01
      • 2021-07-14
      • 2022-07-05
      • 2013-05-23
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多