我在使用servlet的Java EE Web應用程序中異步加載JavaScript文件。從/ WEB-INF /使用servlet異步加載javascript:普遍擔心
js文件位於/WEB-INF/js/文件夾下。
處理進如下:
在的index.jsp:
<script src="/servlet/mainLoader.js">
的的servlet請問neccessary工作從內部/WEB-得到JS文件INF/js/。
所以基本上我打電話一個主要的js文件mainLoader.js本身加載JS文件的休息,在我的應用程序。 此架構背後的原因是爲了隱藏js文件中的一些關鍵信息,因此用戶將無法瀏覽文件的路徑並檢查源代碼。
我有兩個問題:
- 這是否被認爲是一種不好的做法?
- 當前我正在開發我的應用程序本地(本地主機),請問這個js加載系統導致問題,當我移動到生產模式?我的意思是遠程用戶能夠在不在本地主機上的情況下卸載js文件?
答:
@BalusC讓我意識到這裏是我的選擇錯了。我沒有意識到這種JS抓取只能用於GET請求。我認爲它可以與POST協同工作,從而禁用servlet上的GET方法(以便不能直接從url欄訪問JS)。
另外,什麼@David說是真實的,但我試圖讓它不是很直接閱讀JS源代碼。
所以我發現@Todd霞飛是絕對正確的,我們的教訓:
「1)通過隱藏的安全性是一個記錄不好的做法。」
這種方法絕對沒有意義。最終用戶只需打開servlet的URL即可獲得JS文件。例如。 http:// localhost:8080/contextname/servlet/mainLoader.js我也不確定「異步」是如何在這種情況下有意義的。它只是下載JS的webbrowser,而不是web服務器。 – BalusC 2012-02-17 00:15:09
@BalusC使用ajax函數(帶有返回類型腳本)的web瀏覽器調用servlet,它自己將來自WEB-INF的js文件作爲java InputStream加載並讀取其字節,刷新,然後將結果返回給函數。當然,網絡服務器正在下載JS,但它正在返回流的servlet。爲什麼它沒有意義?正是爲什麼我想知道它的不好的做法..我基本上試圖做一個非常小的例子,例如如何使用ajax下載其JS的JS。 – shadesco 2012-02-17 05:56:49
不,它不是下載文件的網絡服務器。這是網頁瀏覽器。將JS文件放在'/ WEB-INF'之外並將URL改爲指向它時,它絕對沒有區別。 – BalusC 2012-02-17 10:18:49