2016-03-16 20 views
1

基本上我有這個碼頭服務器運行在我的本地與根目錄webapp /下的一堆文件夾/文件。 目前,他們只需在瀏覽器這樣輸入http://localhost:8080/server-name/訪問:如何防止Jetty中的目錄列表?

the static directory of the server

顯然,這看起來很醜陋,當用戶進入到這個根目錄,所以我想知道是否有可能阻止此頁或者用一些友好的信息掩蓋它。

到目前爲止,我已經通過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 /文件夾的實際訪問,這是肯定不會我的意圖。 那麼,是否有可能簡單地阻止/屏蔽來自用戶的頁面而沒有任何其他影響?

回答

2

你能編輯自己的web.xml嗎?

在積極的情況下,添加此片段

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

注意:該代碼段屬於默認的servlet配置。 –

+0

@JoakimErdfelt,是的,你是對的。我忘了提及。 OP,記住這些信息。 – josivan

+0

感謝提示。所以我感覺到我正在使用的servlet類 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 無法使用此段的權利?我查看了api,沒有找到名爲dirAllowed的字段... –

0

像@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> 

發帖這裏有詳細的答案。