【发布时间】:2020-06-03 02:04:05
【问题描述】:
关于实现多个 axios 实例的快速问题。
我根据需要在我的移动应用程序中调用我自己的 API。通过检查 Google Signin 或 Facebook Signin 颁发的令牌是否经过身份验证并与预期用户匹配来保护某些 API 端点。其他端点不需要令牌,实际上要求前端根本不发送令牌以继续在后端正确的逻辑路径。
我在前端获取用户令牌时设置了全局 axios 实例。我希望所有 axios 调用都默认包含令牌。为此,我将默认的 Authorization 标头设置为:
import axios from 'axios'
...
axios.defaults.headers.common.Authorization = `Bearer ${fbUserInfo.accessToken}`
此代码在加载的应用程序的初始页面上运行,因此每次我在应用程序的其他地方使用 axios 时,现在都包含令牌。在我继续执行以下步骤之前,它会按预期工作。
为了创建一些不应包含令牌的重复 API 调用,我在我的一个 redux 操作创建器中创建了一个“无令牌”实例。
const axiosTokenlessInstance = axios.create()
...
axiosTokenlessInstance.defaults.headers.common.Authorization = false
当我直接调用它时,这确实覆盖了默认的 axios 设置,但是,当我再次直接调用 axios 时,我意识到它也覆盖了我的默认设置。
我预计这种行为是我仍然可以在其他地方调用 axios.post 或 axios.get 并且它仍然会包含令牌。我弄错了吗,我必须创建一个“标记”实例吗?我不希望这样做,因为我必须在任何地方都明确地检查并替换标记实例,而不仅仅是使用 axios 默认值。谢谢!
【问题讨论】:
-
我遇到了和你一样的问题。不知道为什么。有人知道为什么吗?