如何在 axios 拦截器中设置 http cookie?

Posted

技术标签:

【中文标题】如何在 axios 拦截器中设置 http cookie?【英文标题】:how to set http cookie in axios interceptor? 【发布时间】:2019-05-23 05:53:42 【问题描述】:

我想知道如何为 http cookie 设置 axios 拦截器。

我在vue SPA中使用axios,后端在laravel上,API设置http cookie,但是现在我需要将它发送回去处理一些请求。

实际上我有身份验证令牌和刷新令牌,身份验证令牌在本地存储中(它是短暂的),接下来是应用程序流程:在每个请求中,我在请求标头中设置身份验证令牌,laravel API 检查身份验证令牌是否有效以及是否它是请求返回数据,但如果身份验证令牌无效,我必须使用 http cookie 中的 refreshtoken 发出新请求,我知道我无法通过 javascript 访问它,我该怎么办?我怎样才能使这项工作?

这里还有一个棘手的部分是我不想在每个请求上设置刷新令牌,只有在需要重新生成身份验证令牌时。

如果我误解了什么,请不要犹豫,让我朝着正确的方向前进。

【问题讨论】:

【参考方案1】:

像这样简单的事情应该会让你朝着正确的方向前进:

axios.interceptors.response.use(response => 
  if (response.data.token) 
    window.localStorage.setItem('token', response.data.token)
  
);

【讨论】:

是的,我知道,我在 localStorage 中的身份验证令牌,我可以这样设置,但我对 http cookie 中的刷新令牌感到困惑

以上是关于如何在 axios 拦截器中设置 http cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何在axios中设置全局标头?

如何在axios中设置header和options?

Axios 中的单元测试拦截器逻辑

Axios 拦截器 - 如何从 vuex 商店返回响应

如何在反应中设置来自axios的响应状态

如何在 NuxtJS 中设置全局 $axios 标头