Axios - 仅在1个呼叫中删除标题授权

8 axios vuex vuejs2

如何在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(...)
    },
Run Code Online (Sandbox Code Playgroud)

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

pha*_*raa 21

要发送不带请求的请求:

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

与此类似地更改您的请求:

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

我正在寻找的答案已发布在 Apurva jain 的答案的评论中,但尚未做出单独的答案,因此我将其单独发布以供参考:)


Apu*_*ain 16

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

适合我.

如果您遇到问题请告诉我,我可以帮助找出其他解决方案.

  • 但这不会删除所有请求的身份验证吗?我仍然需要将该令牌用于其他请求,这些请求将在该特定请求之后不久发生 (2认同)
  • 您可以尝试一下吗?transformRequest:[(data,headers)=> {delete headers.common.Authorization返回数据}] (2认同)
  • 我指的是 github 库上的以下问题 -> [axios/issue](https://github.com/axios/axios/issues/382) (2认同)
  • 这似乎有效!状态:200 从未如此出色。我很生气,昨天我花了很多时间研究 Axios 问题,但没有找到。哈哈 (2认同)

小智 10

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

var instance = axios.create();
delete instance.defaults.headers.common['Authorization'];

instance.get("http://api.com");

Run Code Online (Sandbox Code Playgroud)


Bob*_*ani 6

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

axios.get("http://api.com", {
        headers:{ Authorization:""}
});
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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