为什么此axios put请求未正确设置标头

时间:2019-12-31 04:18:40

标签: javascript node.js axios discord.js put

因此,我正在编写一个discord机器人,该机器人基本上可以使我为一堆不同的命令制作的API连接起来。不幸的是,我坚持这一看跌期权要求,并且指出了错误所在。 请求似乎没有发送我在标头中设置的身份验证密钥。我检查了API日志,并且auth中间件拒绝了该请求,因为没有提供密钥。我将不胜感激。

  • 这是在异步函数中
  • 所有其他请求都有效,实际上我是从以前的有效请求中复制并粘贴了此标头
  • 此请求不需要正文
  • 在某种程度上相关的情况下:位于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'
 }

注意:这不是使用常规身份验证请求的格式,只是将其视为没有通过的标头对象

2 个答案:

答案 0 :(得分:1)

尝试一下,让我知道它是否有效。

{ headers: {"Authorization" : `Bearer ${AUTH-KEY-GOES-HERE}`} }

注意:请确保您的服务器已设置好,以便它使用Access-Control-Allow-Headers:Authorization标头响应该URL上的OPTIONS请求。

答案 1 :(得分:0)

axios.get()axios.put()没有相同的参数,但是您试图为两者使用相同的参数。

axios.get(url[, config])
axios.put(url[, data[, config]])

即使您的data中没有.put(),您也必须将某些内容放在第二个参数位置,因为如果没有它,axios会将配置对象作为数据而不使用它是配置,这很可能是为什么自定义标头未按需要设置的原因。