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

Posted

技术标签:

【中文标题】如何使用 Axios reactjs 获取 303 请求的响应头【英文标题】:How to get response headers for 303 request using Axios reactjs 【发布时间】:2019-02-15 18:18:03 【问题描述】:

我正在使用下面的代码

    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

【问题讨论】:

【参考方案1】:

你不能。 Axios 是 XMLHttpRequest 的包装器,它透明地处理重定向响应,并且无法更改它。

如果您要切换到 fetch,那么您可以使用 a request object 指定不自动遵循重定向。

【讨论】:

但是为什么我得到 error.reponse 为 undefined 至少我应该得到响应标头,我可以在 Network 选项卡中看到它。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

目前,您可以:

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

【讨论】:

以上是关于如何使用 Axios reactjs 获取 303 请求的响应头的主要内容,如果未能解决你的问题,请参考以下文章

Yelp Api - Axios/ReactJs - 如何编写代码

无法使用 axios 和 ReactJS 执行获取请求

无法使用 ReactJs、Axios、Redux 渲染/显示从 api 获取的数据

Reactjs之Axiosfetch-jsonp获取后台数据

ReactJs,如何给 Axios 我的令牌以从 API 检索数据

从 Promise(ReactJS 和 Axios)中提取图像数据