能否为全局所有fetch请求统一自动添加Authorization公共请求头?
可以通过重写原生fetch方法实现全局请求拦截,无需手动给每个fetch请求单独配置,所有请求类型(GET/PUT/PATCH/DELETE等)都会自动携带指定的Authorization头。
具体实现代码如下:
// 先缓存原生的fetch方法 const rawFetch = window.fetch; // 重写fetch逻辑 window.fetch = function(resource, options = {}) { // 合并原有配置和默认头 options.headers = { ...options.headers, // 仅在token存在时添加Authorization头,避免传入无效值 ...(localStorage.id_token ? { Authorization: localStorage.id_token } : {}) }; // 调用原生fetch发起请求 return rawFetch.apply(this, arguments); };
注意事项
- 上述代码需要在项目所有fetch请求触发前执行,建议放到项目入口文件的最顶部引入
- 如果存在不需要携带Authorization头的请求(比如第三方公共接口),可以自行添加白名单判断逻辑,匹配到对应url时跳过加头步骤即可
- 建议补充token过期判断逻辑,避免携带无效的过期token发起请求
内容的提问来源于stack exchange,提问作者Stupid.Fat.Cat
相关产品推荐
相关产品推荐

