reactjs - 如何正确设置axios默认标题

标签 reactjs http-headers axios

我在我的项目中使用reactjs,但是在config.js文件中我设置了全局axios配置时遇到一个问题,我正在为axios请求设置默认 header ,但是当我发出axios请求时,它不会在请求中发送这些 header 。

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);
            });

最佳答案

您可以将axios interceptors用于此任务。

1-)在成功登录内部,将检索到的 token 放入localStorage。删除setAuthToken行。

 .then((res) => {
                setCurrentUser(res.data);
                localStorage.setItem("token", res.data.accessToken);
                setLoading(false);
            })

2-)将此拦截器添加到您的axios实例中。
const instance = axios.create({
    baseURL: 'URL/api'
});

instance.interceptors.request.use(
  function(config) {
    const token = localStorage.getItem("token"); 
    if (token) {
      config.headers["Authorization"] = 'Bearer ' + token;
    }
    return config;
  },
  function(error) {
    return Promise.reject(error);
  }
);

关于reactjs - 如何正确设置axios默认标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712034/

相关文章:

reactjs - 尝试导入错误 : 'useHistory' is not exported from 'react-router-dom'

reactjs - 为什么我在 Chrome 上得到这个 Uncaught (in promise)?

带有 token 身份验证的 Java HTTP 请求

google-app-engine - 是否可以从谷歌应用引擎响应 header 中删除 "Google Frontend"?

tomcat - HttpServletResponse 如何获取 header 以检查大小

javascript - 使用 Axios 取消之前的 API 请求

Javascript 从 Promise 获取数据(axios)

reactjs - 为什么react-redux connect不直接将Dumb Component作为参数?

reactjs - 如何使用react和axios使用不同的IP地址进行开发和生产

javascript - React中一键连续调用函数