亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不暴露完整的“/靜態”文件夾的情況下以快遞方式提供單個靜態文件?

如何在不暴露完整的“/靜態”文件夾的情況下以快遞方式提供單個靜態文件?

HUH函數 2022-01-13 17:04:42
我正在創建一個使用 JWT 的非常簡單的項目。我通過快遞服務一切,我沒有前端和后端。我想做的是根據用戶的授權提供特定的 html 文件(在https://localhost:3000入口點 server.js 上提供服務)人們不斷推薦使用(server.js):app.use(express.static('static'))但這當然不起作用,因為我可以通過訪問https://localhost:3000/whatever.i.want訪問任何這些文件。我也試過(server.js):app.use( '/secret' , authMiddleware, function(req,res){    if(auth){      res.sendFile(__dirname + '/static/secret.html')    }});但在我的樣式表和腳本上給出了 404,以及一些奇怪的 MIME 類型錯誤拒絕將https://localhost:3000/script.js作為腳本執行,因為給出了“X-Content-Type: nosniff”并且其 Content-Type 不是腳本 MIME 類型。如果我添加它會起作用:app.get( '/styles.css' , function(req,res){  res.sendFile(__dirname + '/static/styles.css')});app.get( '/script.js' , function(req,res){  res.sendFile(__dirname + '/static/script.js')});但是我真的必須為我使用的每一個樣式表和腳本都這樣做嗎?一定有更好的方法?。?!1.) 人們這樣做的最佳方式是什么?具體來說,是否可以在不使用前端并從后端提供所有靜態文件的情況下創建授權的網絡應用程序?2.) 您的靜態目錄是否必須可公開訪問?這意味著您只能在某些端點上施加授權約束,然后使用調用這些端點的腳本文件?這仍然允許您查看基本 HTML,而不是 API 調用的任何結果。這實際上有效,但很惡心。文件系統server.js/static  /blah.html  /secret.html  /secret.css  /secret.js
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

如果您想有選擇地從快速服務器提供資產,您可以執行以下操作:


let secrets = ['secrets.html', 'my_diary.html']


app.use((req, res, next) => {

    let shouldBeAuthorised = secrets.some(s => req.url.includes(s))

    if (shouldBeAuthorized)

        // check they are authorized to be served this content

    else

        // just serve the content, carry on... no need to worry

})


app.use(express.static('static'))

我的使用req.url.includes非常不穩定,并且文件列表更復雜,可能會導致您需要對未明確在黑名單中的文件進行授權......但上述代碼的基本結構應該可以實現您正在尋找的內容實現。


查看完整回答
反對 回復 2022-01-13
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

您可以通過創建一個名為 public 的文件夾來解決此問題,您可以將所有 css、js 放在該文件夾中。并使用靜態中間件服務公用文件夾

app.use(express.static('public'))

然后是另一個名為 secret 的文件夾,您將在其中構建路由、驗證 JWT 令牌并根據用戶權限提供 html 文件


查看完整回答
反對 回復 2022-01-13
  • 2 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號