【问题标题】:Axios - Remove headers Authorization in 1 call onlyAxios - 仅在 1 次调用中删除标头授权
【发布时间】:2018-03-21 06:07:05
【问题描述】:

如何仅在 1 次调用中删除 axios.defaults.headers.common.Authorization?

我正在为对我的域的所有调用设置默认值,但是我在另一个域上进行了 1 个调用,如果传递了令牌,调用会给我一个错误,当没有保存默认 Auth 令牌时一切正常.

所以我想要做的不是在该特定调用中传递 Auth

我试过了,但是不行

    loadApiCoins({ commit }) {
        Vue.axios({
            method: 'get',
            url: 'https://api.coinmarketcap.com/v1/ticker/',
            headers: {
                'Authorization': '',
            },
        }).then(...)
    },

我也尝试过 auth: {...} 但这也不起作用。 解决方案是什么? 谢谢

【问题讨论】:

    标签: vuejs2 axios vuex


    【解决方案1】:

    要扩展@phantomraa 的答案,您可能需要使用

    this.$axios.$get(
          url, {
          // modify auth header for current request only
          transformRequest: (data, headers) => {
            // prevent the header from being added by default
            delete headers.common['Authorization'];
            // some libraries might set it directly as well, e.g. nuxtjs/auth
            delete headers['Authorization'];
            return data;
          }
    })
    

    抱歉,需要更多代表才能发表评论。

    【讨论】:

      【解决方案2】:

      删除 axios.defaults.headers.common["language"];

      【讨论】:

        【解决方案3】:
        delete request.defaults.headers.common.Authorization
        

        request 应该是 $axios.create() 的返回

        【讨论】:

          【解决方案4】:

          要发送请求而不:

          • 修改全局axios 默认值
          • 创建一个新的axios 实例

          类似地更改您的请求:

          axios.get('http://example.com', {transformRequest: (data, headers) => {
              delete headers.common['Authorization'];
              return data;
            }
          });
          

          我正在寻找的答案已发布在 Apurva jain 的答案的 cmets 中,但尚未单独发布,因此我将其单独发布以方便参考:)

          【讨论】:

          • 如果您希望删除所有默认标头,也可以在回调中简单地删除 headers.common
          • 这个答案使用的语法与 Apurva jain 的评论不同。 transformRequest: [(data, headers) => { delete headers.common.Authorization return data }] 是一个数组,返回数据参数。 transformRequest: (data, headers) => { delete headers.common['Authorization']; } 是一个没有返回值的函数。第一种格式对我有用。
          • 谢谢 brianf - 我现在已经相应地更新了我的答案。
          【解决方案5】:

          一个简单的解决方案是从新的 axios 实例中删除所有常见的标头:

          const awsAxios = axios.create({
              transformRequest: (data, headers) => {
                  // Remove all shared headers
                  delete headers.common;
                  // or just the auth header
                  delete headers.common.Authorization;
              }
          });
          

          【讨论】:

            【解决方案6】:

            试试下面的

            delete axios.defaults.headers.common["Authorization"];
            // or which ever header you have to remove
            

            【讨论】:

            • 但这不会删除所有请求的身份验证吗?我仍然需要将令牌用于在此特定请求之后不久发生的其他请求
            • 你可以试试这个transformRequest: [(data, headers) => { delete headers.common.Authorization return data }]
            • 我指的是github库上的以下问题-> axios/issue
            • 这似乎有效!状态:200 从未如此出色。我很生气,昨天我花了很多时间处理 Axios 问题,但没有找到。大声笑
            • 所以这将保留其他调用的令牌对吗?
            【解决方案7】:

            如果您已经为所有请求设置了默认“授权” 您可以为该特定请求创建一个实例

            var instance = axios.create();
            delete instance.defaults.headers.common['Authorization'];
            
            instance.get("http://api.com");
            
            

            【讨论】:

              【解决方案8】:

              我在尝试使用我的 Web 服务身份验证令牌查询 S3 时遇到了同样的问题。用这个修复它。

              axios.get("http://api.com", {
                      headers:{ Authorization:""}
              });
              

              您可以将默认标题更改为空字符串,这不会影响常见的默认标题。虽然不完全确定是否所有 Web 服务都会忽略空字符串标头。

              【讨论】:

              • 是的,但是如果您使用像 aws 这样的服务,这可能是个问题
              【解决方案9】:

              delete axios.defaults.headers.common["Authorization"]; 将解决问题。但请记住加回授权标头

              【讨论】:

                猜你喜欢
                • 2017-08-18
                • 1970-01-01
                • 2019-11-11
                • 1970-01-01
                • 2020-02-11
                • 1970-01-01
                • 2019-05-30
                • 2017-11-23
                • 2021-12-27
                相关资源
                最近更新 更多