axios.create正在共享默认值,这是正常的吗?

时间:2017-09-01 01:34:08

标签: javascript axios

我试图创建2个axios客户端,但它们似乎正在共享标头。我的代码如下:

var client1 = axios.create();
var client2 = axios.create();

client2.defaults.headers.common['Authorization'] = 123;

console.log(client1.defaults.headers.common);
console.log(client2.defaults.headers.common);

两者都将Authorization标头设置为123

https://jsfiddle.net/yebqu22d/

我做错了什么或这是预期的行为?

2 个答案:

答案 0 :(得分:0)

这应该是预料之中的。确切地说defaults意味着什么。

更新

在我看来,client1.defaultsclient2.defaults甚至axios.defaults都指向相同的参考。无论你改变了哪一个,它都会与他人分享价值。

但是可以通过create为每个实例指定配置。检查以下内容:

var client1 = axios.create({
        headers: {
        common: {
            Authorization: 123
        }
      }
});
var client2 = axios.create();

//client2.defaults.headers.common['Authorization'] = 123;

console.log(client1.defaults.headers.common);
console.log(client2.defaults.headers.common);

答案 1 :(得分:0)

看起来这是axios的错误:https://github.com/mzabriskie/axios/issues/385