源碼閱讀
https://juejin.im/post/6885471967714115597#heading-15
* HTTP 攔截器的設(shè)計與實現(xiàn):
從 任務(wù)注冊、任務(wù)編排和任務(wù)調(diào)度 三個方面來分析 Axios 攔截器的實現(xiàn)。
任務(wù)注冊就是我們最常見的觀察者,維護 handlers 數(shù)組。
任務(wù)編排組裝任務(wù)調(diào)用鏈 chain,將 interceptor.fulfilled, interceptor.rejected? 和 dispatchAction,undeffined 和 interceptor.fulfilled, interceptor.rejected 拼接成任務(wù) chain 。
任務(wù)調(diào)度通過 while 語句我們就可以不斷地取出設(shè)置的任務(wù),然后組裝成 Promise 調(diào)用鏈從而實現(xiàn)任務(wù)調(diào)度
* HTTP 適配器的設(shè)計與實現(xiàn):
Axios 同時支持瀏覽器和 Node.js 環(huán)境,對于瀏覽器環(huán)境來說,我們可以通過 XMLHttpRequest 或 fetch API 來發(fā)送 HTTP 請求,而對于 Node.js 環(huán)境來說,我們可以通過 Node.js 內(nèi)置的 http 或 https 模塊來發(fā)送 HTTP 請求。
Axios 的適配器是通過 XMLHttpRequest !== 'undefined' 和 (typeof process !== 'undefined'? 進行了環(huán)境判斷,代碼較簡單,主要可以學習適配器模式
* 如何防御 CSRF 攻擊。
跨站請求攻擊,簡單地說,是攻擊者通過一些技術(shù)手段欺騙用戶的瀏覽器去訪問一個自己曾經(jīng)認證過的網(wǎng)站并運行一些操作。
文章介紹了一些常用的放于 csrf 的方法,如檢查 Referer 字段、同步表單校驗(表單中帶有服務(wù)器生成的token,提交時要帶上)、雙重 cookie 校驗。
Axios 采用了雙重 cookie 校驗,通過使用者設(shè)置config 的 XSRF-TOKEN 字段生效。
重復(fù)請求去重
https://juejin.cn/post/6844903933735878663
https://www.cnblogs.com/small-coder/p/9133375.html