【发布时间】:2020-04-19 17:05:50
【问题描述】:
所以,我正在编写一个不和谐的机器人,它基本上连接了我为一大堆不同命令制作的 API。不幸的是,我被困在这个单一的请求上,并且我已经查明了错误。 请求似乎没有发送我在标头中设置的身份验证密钥。我检查了 API 日志,但身份验证中间件拒绝了该请求,因为没有提供密钥。我将不胜感激。
- 这是在异步函数中
- 所有其他请求都有效,实际上我从以前的有效请求中复制并粘贴了此标头
- 此请求不需要正文
- 如果这有点相关:这是在
collector.on('collect', async () => {HERE})中。
let updatedUser = await axios.put(
`https://API-URL-GOES-HERE/api/users/${username}/loaChange`,
{
headers: {
auth:
'AUTH-KEY-GOES-HERE'
}
}
);
收到失败的标头:
{
host: 'API-URL-HERE.herokuapp.com',
connection: 'close',
accept: 'application/json, text/plain, */*',
'content-type': 'application/json;charset=utf-8',
'user-agent': 'axios/0.19.0',
'x-request-id': 'REQID',
'x-forwarded-for': 'IPADRESS',
'x-forwarded-proto': 'https',
'x-forwarded-port': '443',
via: '1.1 vegur',
'connect-time': '2',
'x-request-start': '1577766826940',
'total-route-time': '5',
'content-length': '194'
}
之前的成功请求:
let initialUser = await axios.get(
`https://API-URL-GOES-HERE/api/users/${username}`,
{
headers: {
auth:
'AUTH-KEY-GOES-HERE'
}
}
);
从成功中收到的标头:
{
host: 'API-URL-HERE.herokuapp.com',
connection: 'close',
accept: 'application/json, text/plain, */*',
auth: 'AUTH-KEY-HERE',
'user-agent': 'axios/0.19.0',
'x-request-id': 'REQID',
'x-forwarded-for': 'IPADDRESS',
'x-forwarded-proto': 'https',
'x-forwarded-port': '443',
via: '1.1 vegur',
'connect-time': '0',
'x-request-start': '1577766773203',
'total-route-time': '0'
}
注意:这不是使用常规身份验证请求的格式,只是将其视为未通过的标头对象
【问题讨论】:
-
请从实际成功的请求中捕获请求标头(在您拥有的其他代码中)。然后捕获这个 axios 请求发送的内容。在我们帮助您编写 axios 代码来发送它之前,我们需要准确地查看标题应该是什么。另外,您是从浏览器发送的吗?如果是这样,您可能会遇到跨源问题,因为自定义标头会触发额外的跨源检查,例如 OPTIONS 请求以预检您的目标可能支持也可能不支持的请求。
-
@jfriend00 我更新了帖子。感谢您的回复!它不是来自浏览器,而是来自使用 heroku 运行的不和谐机器人的请求。
-
不知是否需要axios选项
withCredentials: true?
标签: javascript node.js axios discord.js put