如何使用Axios reactjs获取303请求的响应标头

时间:2018-09-11 09:15:05

标签: javascript reactjs browser axios

我正在使用以下代码

    const configureAjaxClient = () => {
        let csrf_token = '';
        const instance = axios.create({
            baseURL: '/abc',
            timeout: 300000,
            paramsSerializer: (params) => {
                return qs.stringify(params, { arrayFormat: 'brackets' });
            },
        });

        instance.interceptors.request.use((config) => {
            config.headers['X-CSRF-Token'] = csrf_token;
            if (config.data) {
                config.data = qs.stringify(config.data);
            }
            return config;
        });

        instance.interceptors.response.use((response) => {
            if (response.data) {
                return Promise.reject(response);
            }
            return response;
        }, (error) => {
            return Promise.reject(error);
        });

        return instance;
    };

    export default configureAjaxClient;

当我的请求是303时,将其重定向到位置标头以作为响应,并在下面调用错误函数

    errorError:Network  Error
        at createError (createError.js:16)
        at XMLHttpRequest.handleError (xhr.js:87)   

错误的是我得到error.response为未定义。

我将如何获取响应头,并希望重定向到另一条路由。

请帮助 我正在使用最新的Axios和reactjs

3 个答案:

答案 0 :(得分:1)

不能。 Axios是XMLHttpRequest的包装,它透明地处理重定向响应,并且没有更改它的选项。

如果要切换到访存,则可以使用a request object来指定不自动遵循重定向。

答案 1 :(得分:0)

我的服务器正在检查其Ajax请求是否为请求中缺少此标头

// Headers
// This header is required to inform server that its an Ajax request
instance.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

答案 2 :(得分:0)

截至目前,您可以:

    const response = axios('your303endpoint')
      .catch(data => data.response.headers)
      .then(headers => console.log(headers))