2013-03-27 31 views

回答

16

我不相信任何瀏覽器目前允許從本地文件加載源地圖,所以你必須把源地圖以某種方式在線。

一種解決方案可能是創建一個.htaccess文件(或者類似的東西,如果您不使用Apache),它將訪問源映射(和原始源文件)限制爲非本地網絡的客戶端。

但是,您應該認識到,出於安全原因,如果您想阻止訪問源映射,那麼您將實現的只是一種虛假的安全感。 Javascript是公開的,即使它被縮小和加密,也很容易解密它。做不是把任何敏感數據放到你的javascript中。即使你對它進行縮小和加密。

+1

它不會運行,如果它是加密的,我認爲你的意思是[模糊](https://en.wikipedia.org/wiki/Obfuscation_%28software%29)? – 2013-07-06 08:45:43

+0

當然,混淆可以通過將代碼傳遞給美化者來解決,但我想我的觀點是,無論您怎麼想,您仍然會將所有代碼和數據發送給客戶端。因此,即使您創建了某種令人驚歎的加密方案,仍然需要發送解密的方式給客戶端,因爲如您所說,否則客戶端將無法運行它。攻擊者所要做的就是在「祕密」數據未加密後的某個時候放置一個斷點。 – AHM 2013-07-09 09:20:52

+0

這不是真正的隱藏敏感數據,而是關於提高功能所需的努力。 – caesay 2016-12-02 10:33:58

4

以下可能對您有用

Multi-level Source Maps - 的CSS忍者

的聯繫也解釋了使用UglifyJS2與可指定輸入源的地圖。但是,我沒有使用本地輸入源進行測試

此外,您可以嘗試在本地託管文件,並將文件更改爲local.mydomain.comlocalhost。然後指定local.mydomain.com/js/my-orig-js-file.js作爲源根目錄

0

另一種解決方案是上傳映射文件和縮小的js到服務器上,並將原始js文件保存在本地。然後修改您的地圖文件,如下所示:

{ 
    "version":3, 
    "sources":["http://localhost/library.js"], 
    "names":["example","console","log"], 
    "mappings":"AAAA,QAASA,YACRC,QAAQC,IAAI","file":"script.min.js" 
}