axios.interceptors.request.use设置POST有效,GET不生效
我的axios设置:
import axios from 'axios'
import store from '../store/index'
import * as types from '../store/mutation-types'
import router from '../router'
// axios 配置
axios.defaults.timeout = 5000
axios.defaults.baseURL = '/agent/web'
// http request 拦截器
axios.interceptors.request.use(
config => {
if (store.state.token) {
config.headers.Authorization = store.state.token
}
return config
},
err => {
return Promise.reject(err)
},
)
// http response 拦截器
axios.interceptors.response.use(
response => {
return response
},
error => {
if (error.response) {
switch (error.response.status) {
case 401:
// 401 清除token信息并跳转到登录页面
store.commit(types.LOGOUT)
// 只有在当前路由不是登录页面才跳转
router.currentRoute.path !== 'login' &&
router.replace({
path: 'login',
query: { redirect: router.currentRoute.path },
})
}
}
return Promise.reject(error.response.data)
},
)
export default axios
所有的POST都很正常,会带上token,但是所有的GET都不正常,比如:
this.axios.get('/logout.html') 出现了401.检查request的headers,发现没有带上Authorization的值,继续追查下去,发现应该是if (store.state.token)这句判断在GET的时候与POST的时候不一样,不知道是为什么.
store.state.token是保存VUEX里字符串.
现在的暂时替代方案是在所有的get方法里,都自行带上token
let token = this.$store.state.token
this.axios.get('/logout.html', {
params:{},
headers: {
'Authorization': token
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
还在用0.18.0,是因为axios的问题吗?
你用get请求的时候,在axios.interceptors.request.use打印store.state.token的值试试看,是不是空值