Vuejs2 Axios-仅在1次调用中删除授权标头

Vuejs2 Axios-仅在1次调用中删除授权标头,vuejs2,axios,vuex,Vuejs2,Axios,Vuex,如何仅在一次调用中删除axios.defaults.headers.common.Authorization 我正在为我的域的所有调用设置默认值,但我有一个在另一个域上进行的调用,如果令牌被传递,则调用会给我一个错误,当没有默认的Auth令牌保存时,一切正常 所以我要做的是在特定的调用中不传递Auth 我试过了,但没用 loadApiCoins({ commit }) { Vue.axios({ method: 'get',

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

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

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

我试过了,但没用

    loadApiCoins({ commit }) {
        Vue.axios({
            method: 'get',
            url: 'https://api.coinmarketcap.com/v1/ticker/',
            headers: {
                'Authorization': '',
            },
        }).then(...)
    },
我还尝试了auth:{…},但也不起作用。 解决办法是什么? 谢谢

尝试以下方法

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

删除axios.defaults.headers.common[“授权”]

这将解决问题。但是请记住将授权头添加回去

我试图用我的web服务授权令牌查询S3时遇到了同样的问题。用这个修好了

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

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

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

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

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


要发送请求而不发送:

  • 修改全局
    axios
    默认值
  • 创建新的
    axios
    实例
将您的请求更改为类似以下内容:

axios.get('http://example.com“,{transformRequest:(数据,头)=>{
删除标题。常用['Authorization'];
返回数据;
}
});

我所寻找的答案发布在Apurva jain的答案评论中,但没有给出单独的答案,因此我将其单独发布以便于参考:)

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

const awsAxios=axios.create({
transformRequest:(数据、标题)=>{
//删除所有共享头
删除headers.common;
//或者只是auth头
删除headers.common.Authorization;
}
});

但这不会删除所有请求的身份验证吗?我仍然需要将令牌用于其他请求,这些请求将在这个特定的请求之后很快发生。您可以尝试一下这个
transformRequest:[(数据,标题)=>{delete headers.common.Authorization return data}]
我指的是github库中的以下问题->这似乎确实有效!状态:200从来没有看起来这么好。昨天我花了很多时间研究Axios的问题,却没有发现,这让我很生气。lolSo这将保留其他调用的令牌,对吗?是的,但是如果您使用aws这样的服务,这可能是一个问题,您也可以简单地删除
头。如果您希望删除所有默认头,则在回调中使用公共
。此回答使用的语法与Apurva jain的注释不同<代码>transformRequest:[(数据,标题)=>{delete headers.common.Authorization return data}]
是一个数组,返回数据参数<代码>transformRequest:(数据,头)=>{delete headers.common['Authorization'];}
是一个没有返回值的函数。第一种格式适合我。谢谢brianf-我现在相应地更新了我的答案。