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

时间:2017-10-09 23:29:01

标签: vuejs2 axios vuex

如何在1次通话中删除axios.defaults.headers.common.Authorization?

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

所以我要做的就是不通过特定电话中的Auth

我尝试了这个,但它不起作用

bool a = 2;

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

7 个答案:

答案 0 :(得分:9)

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

适合我。

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

答案 1 :(得分:8)

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

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

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

答案 2 :(得分:6)

要发送请求而没有:

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

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

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

delete request.defaults.headers.common.Authorization

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

答案 5 :(得分:1)

尝试使用Web服务身份验证令牌查询S3时遇到相同的问题。对此进行了修复。

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

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

答案 6 :(得分:0)

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

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