【问题标题】:How to set Axios headers to a instance (not globally)如何将 Axios 标头设置为实例(非全局)
【发布时间】:2018-11-25 20:38:36
【问题描述】:

我正在尝试使用 axios 向 Google Books Api 发送获取请求。 如果未设置授权标头,它将起作用。 但是,在我登录到我的应用并将 Authorization 标头设置为令牌后,Google Api 会响应。

errors:[{domain: "global", reason: "authError", message: "Invalid Credentials", locationType: "header",…}]
message:"Invalid Credentials"

抱歉,我对编程还是很陌生,我只想知道绕过该错误的最佳方法。我尝试将 Authorization 标头设置为它自己的实例,而不是全局设置它,但在我的 React 应用程序的操作调用中找不到这样做的方法。

请提前帮助和感谢!

【问题讨论】:

    标签: reactjs google-api axios request-headers


    【解决方案1】:

    你可以这样试试

    //设置标题

    var header = {
                   'Content-Type': 'application/json',
                   'Authorization':'Bearer '.concat(USER_TOKEN)
                }
    
    axios.get(URL, header)
     .then(response => {
         console.log(JSON.stringify(response));
      })
     .catch((error) => {
         console.log('error ' + error);
      });
    

    【讨论】:

      【解决方案2】:

      谢谢大家的帮助!由于我在客户端设置 jwt 的方式,它们对我不起作用。

      下面的代码最终对我有用,因为我只需要覆盖全局授权标头。

      import axios from 'axios';
      const axiosInstance = axios.create({
        baseURL: url
      });
      
      axiosInstance.defaults.headers.common = '';
      
      export default axiosInstance;
      

      【讨论】:

        【解决方案3】:

        要在 get 请求中使用 axios 在 headers 中设置授权令牌,您可以尝试以下代码:

        const AuthStr = 'Bearer '.concat(USER_TOKEN);
            axios.get(URL, { headers: { Authorization: AuthStr } }).then(response => {
                    console.log(response.data);
                  })
                  .catch((error) => {
                    console.log('error: ' + error);
                  });
        

        【讨论】:

          猜你喜欢
          • 2017-05-01
          • 2020-09-12
          • 2019-04-11
          • 2021-08-27
          • 2020-06-16
          • 2018-05-24
          • 2022-10-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多