javascript - 为什么这个 axios put 请求没有正确设置 header

标签 javascript node.js axios discord.js put

所以,我正在编写一个 Discord 机器人,它基本上连接了我为一大堆不同命令制作的 API。不幸的是,我被困在这个 put 请求上,并且我已经查明了错误。 该请求似乎没有发送我在 header 中设置的身份验证 key 。我检查了 API 日志,身份验证中间件拒绝了请求,因为没有提供 key 。我将不胜感激任何和所有的帮助。

  • 这是一个异步函数
  • 所有其他请求均有效,事实上,我从之前的工作请求中复制并粘贴了此 header
  • 此请求不需要正文
  • 如果这有点相关:它位于 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'
                                }
                            }
                        );

从失败中收到的 header :

{
   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'
                            }
                        }
                    );

成功收到的 header :

{
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'
 }

注意:这不是使用常规身份验证请求的格式,只需将其视为未传递的 header 对象

最佳答案

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

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

即使您的 .put() 没有任何 data,您也必须在第二个参数位置放置一些内容,因为没有它,axios 就会采用您的配置对象作为数据,而不是将其用作配置,这可能是自定义 header 未按预期设置的原因。

关于javascript - 为什么这个 axios put 请求没有正确设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539518/

相关文章:

javascript - Typescript - 在解构构造函数中将属性设为公共(public)

node.js - 如何使用 NodeJS 在 MongoDB 中插入以毫秒为单位的时间戳作为 NumberLong

javascript - 设置 div 的高度但保持流畅

javascript - 是否可以通过搜索插件正确使用导航键(热键插件)("show_only_matches": true)

javascript - React-Native 平面列表拉动刷新不显示

javascript - Node.js exec 调用永远不会调用回调

node.js - CentOs 6.3 上的 NodeJS 安装错误

reactjs - 尽管处于状态,但在 forEach 函数中进行 Axios 调用以附加对象在渲染器中未被识别

javascript - Axios:获取两个请求 OPTIONS & POST

javascript - 无法在 axios 回调中访问更正此问题