[英]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.