2014-02-28 33 views
0

這個問題可能是多餘的,但我在搜索很多參考時沒有得到具體答案。如何限制資源(js,html,pdf,css,圖片)的強力瀏覽

我有以下結構的項目。

MyProject 
    -JavaResources 
    - build 
    - src 
     - main 
       - java 
       - resources 
       - webApp 
         - META-INF 
         - resources 
         - WEB-INF 
           - jsps 

在這個項目中struture我有在上下文根資源(JS,CSS,圖像,PDF,HTML)(Web應用程序)文件夾,但WEB-INF的出邊。

在JSP中我得到的資源與如下上下文根路徑:

<a href="<%=request.getContextPath()%>resources/Help.html" target="_blank"> </a> 

由於這種資源可以通過上下文根路徑瀏覽器直接acceesed並導致強制瀏覽。

我找到的一個參考是應用程序MyProject \ src \ main \ java \ resources文件夾。最終進入到WEB-INF/classes文件夾 但按照Servlet規範

/WEB-INF /班/ *的servlet和實用工具類目錄。此目錄中的 類由應用程序類加載器使用,以從 加載類。

所以我不確定這個資源是否合適。

我想知道最佳實踐和放置位置以在Web應用程序中具有所有類型的資源(css,js,html,pdf,css),這可以限制強大的瀏覽以及在jsp中訪問它們的方式。

在此先感謝。

回答

1

src/main/resources文件夾是標準Maven文件夾,用於使用ClassLoader將必須由應用程序代碼本身讀取的資源。例如:

InputStream in = MyClass.class.getResourceAsStream("/someFile.properties"); 

一旦應用程序是由Maven的建成,在src /主/資源文件最終會在WEB-INF/classes目錄F中的Web應用程序之中。

這並不意味着放置必須由瀏覽器下載的文件。這些文件可以位於webapp根文件夾下的任何位置,除了在WEB-INF中。

+0

感謝您的回覆,我正在使用application.getResourceAsStream(「/ Help.html」)和getClass.getResourceAsStream(「/ Help.html」)這兩個不在這裏工作是代碼 \t \t \t \t \t \t \t target="_blank">我做錯了什麼? –

+0

'getResourceAsStream()'允許從您的java代碼讀取類路徑中文件的數據。你爲什麼要用它在JSP中生成鏈接?這沒有任何意義。你想達到什麼目的? –

+0

它是一個圖像鏈接,點擊圖像時,一個html頁面將在新標籤頁中打開。由於安全問題,我可以將它放在上下文根目錄以及WEB-INF之外。這就是爲什麼我決定放入資源文件夾,因此無法直接訪問。 –

0

通過瀏覽器發出的GET請求訪問網頁資源以便在網頁中使用。

從一個Web服務器點存在,如果一個網絡資源直接請求通過與瀏覽器網址或通過聲明它的網頁的用戶,即<javascript src="some/resource.js"/>

通常的做法是把資源在無差異公共文件夾,在web應用程序的根目錄(正是你所做的)

如果你想限制訪問資源使用security-constraint,以便只有經過身份驗證的用戶才能訪問它們。

如果您確實想要限制對其他頁面請求的資源訪問權限,也許您可​​以構建Filter並僅在referrer標頭爲webapp頁面時才提供。

相關問題