我现在已经遇到过这个问题了几次,我觉得有人在那里知道一种更好的方法来解决api调用问题,而不是我 - 特别是请求标题。
通常当我需要通过请求标头传递我的api令牌时,我一直在摸索传递密钥的确切格式(似乎没有通用格式来执行此操作)。
例如,我目前正在尝试访问vultr v1 api。文档给出了一个需要传递API-Key: SOMEKEY
的卷曲示例,然而,我的第一次尝试很少有用,那我只是在摸索......他们是否想要我的键在一个键/值对或一个字符串中阵列?我是否使用es6对象(没有引号)。
这就是我的意思:
// one method
const opts = {
headers: {
API-Key: 'SOMEKEY'
}
}
// another
const opts = {
'headers': {
'API-Key': 'SOMEKEY'
}
}
// another
const opts = {
headers: [
'API-Key: SOMEKEY'
]
}
axios.get(url, opts).then(res => console.log(res.data))
这是正确的方法吗?在vultr给出的卷曲示例中,它显示:
curl -H 'API-Key: EXAMPLE' https://api.vultr.com/v1/iso/list
我在网络检查员中也看到请求标题显示我正在传递我的API密钥但我仍然收到403(错误的密钥错误)
我已经仔细检查了我的密钥的有效性,这不是问题。 我的问题是: 如何找到标题的正确格式?针对此类问题是否有更好的故障排除方法?任何帮助将不胜感激。谢谢你
更新: 事实证明他们已经拥有基于IP的访问控制。直到现在我才注意到它。因此,他们阻止了我的要求。然而,我的问题仍然存在。找出正确格式的好方法?格式是否正确?
答案 0 :(得分:0)
一种方法是在创建axios对象时设置Headers,如下所示:
- hosts: build.url.com
sudo: yes
roles:
- { role: postgresql, tags: postgresql }
- { role: ruby, tags: ruby }
- { role: build, tags: build }
或
axios = axios.create({headers: {'API-Key': 'EXAMPLE'}});
axios.get(url, opts).then(res => console.log(res.data))