我有一個 Vue Storefront,開箱即用,包含 Nuxt.js 前端和 Express.js 后端。
在這個專案中,我創建了一個自定義服務器中間件(即 Express.js 部分),其中包含一個 Axios 呼叫。我的整個 Vue Storefront 專案都托管并部署在服務器上,我還將 Axios 呼叫的密鑰存盤為 eviorment 變數。每當我通過已部署網站上的 Axios 呼叫請求資料時,我仍然可以在瀏覽器控制臺的有效負載中看到我的密鑰。
這些鍵可以隱藏嗎?由于呼叫是在 VSF 服務器中間件(這是一個 Express.js 服務器的底層)中完成的,并且我的密鑰也在服務器上定義......而不是在 .ENV 檔案中。
官方檔案還說明了有關服務器中間件的以下內容:
- 將憑據安全地存盤在服務器上,而不會將它們暴露給應用程式的最終用戶,
如果這對此有任何影響,我還啟用了服務器端渲染。
uj5u.com熱心網友回復:
正如我在此處之前的回答中所解釋的那樣,您無法真正在客戶端應用程式上隱藏任何內容。
您確實擁有ssr: true并target: 'server'啟用了serverMiddleware. Nuxt 也是一個 Express 服務器,所以從技術上講,你仍然可以完全隱藏東西,這里有詳細的配置。請注意整個答案(尤其是最后的問題)。
TDLR 如上所述:您需要某種代理來隱藏它,因此您可以這樣做:
- 直接使用 Nuxt2,但總體而言,除了支付整個 Node.js 服務器的費用以及在某些時候暴露這些令牌的可能錯誤之外,它有點棘手且難以使用
- 讓另一臺 Node.js 服務器正確分離關注點并將其用作代理,它可以很輕(不需要強大的配置),而不是昂貴的價格
- 無服務器功能在這里可能是最好的主意,因為它輕巧、便宜并且您不需要管理任何東西(在那里發送您的查詢,它將使用秘密令牌代理請求)但是對于冷啟動它可能有點煩人
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485269.html
