我在我的项目中使用reactjs,但我有一个问题,在config.js文件中,我设置了全局axios配置,我设置了axios请求的默认头,但当我发出axios请求时,它不会在请求中发送这些头。
config.js
import axios from 'axios';
const instance = axios.create({
baseURL: 'URL/api'
});
export const setAuthToken = (token) => {
if (token) {
// Apply to every request
instance.defaults.headers.common['Authorization'] = 'Bearer ' + token;
} else {
// Delete auth header
delete instance.defaults.headers.common['Authorization'];
}
};
export default instance;
Login.js
import axios from '../../../config';
import { setAuthToken } from '../../../config';
axios
.post('/auth/signin', {
username: email,
password: password
})
.then((res) => {
setCurrentUser(res.data);
setAuthToken(res.data.accessToken);
setLoading(false);
})
.catch((err) => {
console.log(err);
setLoading(false);
setError(true);
});
3条答案
按热度按时间am46iovg1#
您可以使用axios拦截器来完成这项任务。
1-)在成功登录后,将检索到的令牌放入localStorage。删除setAuthToken行。
2-)将这个拦截器添加到axios示例中。
tcomlyy62#
我必须在示例中创建header对象结构,以便全局header覆盖工作:
下面的代码段不起作用(但不会引发任何错误);使用示例时使用全局标头:
这确实有效,示例标题覆盖全局默认值:
在我看来,在使用#create时,应该默认创建这个对象结构。
另外,如果你想取消设置头文件,不要使用
delete
。nvbavucw3#
默认情况下,您可以添加axios头标记。只需遵循2个步骤
步骤- #1.创建axios示例-
步骤- #2.在发送API请求之前设置默认头