Axios - 仅在 1 次调用中删除标头授权
Posted
技术标签:
【中文标题】Axios - 仅在 1 次调用中删除标头授权【英文标题】:Axios - Remove headers Authorization in 1 call only 【发布时间】: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: ... 但这也不起作用。 解决方案是什么? 谢谢
【问题讨论】:
【参考方案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"];
将解决问题。但请记住加回授权标头。
【讨论】:
以上是关于Axios - 仅在 1 次调用中删除标头授权的主要内容,如果未能解决你的问题,请参考以下文章