簡體   English   中英

僅從index.html請求的快速文件服務

[英]Express file serving only requested from index.html

有什么方法可以通過get請求在Express中提供index.html並將所有外部文件發送給index.html請求嗎?

例如,這是一個非常簡單的index.html頁面

<!DOCTYPE html>
<html>
    <head>
        <script src="jquery.js"></script>
    </head>
</html>

現在, app.get('/', function (req, res) {res.sendFile('index.html')}將發送index.html但不會發送jquery.js。無論如何我都可以解決這並允許所有請求的外部文件也發送出去?我知道我可以使用app.use(express.static(path.join(__dirname, 'public')));盡管我不希望用戶訪問公用文件夾中的某些文件。

將庫文件放在通過靜態文件中間件公開的文件夾中。

例如,我的客戶端文件(包括index.html位於名為wwwroot的文件夾中。 在文件夾中,我有一個文件夾lib位於所有依賴項所在的位置,因此index.html將引用lib的文件,

<!DOCTYPE html>
<html>
    <head>
        <script src="lib/jquery.js"></script>
    </head>
</html>

當然也可以通過靜態文件中間件app.use(express.static('./wwwroot', options));公開wwwroot app.use(express.static('./wwwroot', options));

而且,如果您不希望公開訪問某些文件,請從該文件夾中以rsp的形式刪除它們,或者嘗試使用選項,

let options = {
    dotfiles: 'ignore',
    etag: false,
    extensions: ['html', 'ts', 'css', 'js']
}

我不希望用戶訪問公用文件夾中的某些文件。

如果您不希望用戶訪問公用文件夾中的某些文件,則應從公用文件夾中刪除這些文件。

但是,如果您從公用文件夾中刪除這些文件,那么不要指望它們可以提供給客戶端。

您可以檢查請求是否是訪問index.html的結果,例如檢查Referer標頭或記住用戶是第二次訪問index.html的結果,但是一切都會很容易解決。

用戶也可以下載由於包含在index.html中而可以訪問的每個文件。 這就是網絡的工作方式,沒有辦法解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM