我正在構(gòu)建一個(gè) React.js 應(yīng)用程序,它將與 Go 中內(nèi)置的 REST API 進(jìn)行交互。React 將使用 Javascript Fetch API 向我的 API 發(fā)送請(qǐng)求。問題是我想保護(hù)我的 API 不被其他地方請(qǐng)求。任何人都不應(yīng)該能夠通過 URL 或通過 Postman 等任何其他客戶端直接訪問我的 API。我知道 JWT 是什么,但這并不能解決我的問題,因?yàn)槿魏稳硕伎梢酝ㄟ^瀏覽器訪問令牌,然后繼續(xù)使用令牌在 React 客戶端之外請(qǐng)求 API。我進(jìn)行了廣泛的研究,但沒有什么真正符合我的描述。非常感謝您的幫助,提前。
1 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是一個(gè)本質(zhì)上無法解決的問題。React 在客戶端上運(yùn)行??蛻舳丝刂扑鼒?zhí)行的代碼。因此,您用來將 API 使用限制為僅適用于 React 客戶端的任何機(jī)制都可以在其他客戶端上下文中發(fā)現(xiàn)和重用。你無法控制客戶,如果回報(bào)足夠有價(jià)值,那么這樣做的嘗試就會(huì)失敗。
您可以嘗試通過使用短期授權(quán)令牌來稍微強(qiáng)化它,但是沒有什么可以阻止該令牌在其他上下文中被獲取和重用。
如果您必須限制對(duì) API 的訪問,您應(yīng)該擁有一個(gè)危險(xiǎn)性或特權(quán)較小的公共 API,并且公共 API 應(yīng)該利用您的私有 API,有效代理調(diào)用以隱藏私有 API,并確保僅針對(duì)特權(quán)更高的 API 執(zhí)行經(jīng)過驗(yàn)證的查詢。
不過,如果您可以描述您正在嘗試緩解的問題,則可能還有其他可用的解決方案。
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消