javascript 为什么这个axios put请求没有peoperly设置header

62lalag4  于 2023-04-19  发布在  Java
关注(0)|答案(3)|浏览(113)

所以,我正在编写一个不和谐的机器人,它基本上是我为一大堆不同的命令制作的API。不幸的是,我被这个put请求卡住了,我已经找到了错误。请求似乎没有发送我在头中设置的auth密钥。我检查了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'
                            }
                        }
                    );

接收到的来自Success的标题:

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

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

oxf4rvwz

oxf4rvwz1#

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

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

即使你的.put()没有任何data,你也必须在第二个参数位置放一些东西,因为没有它,axios会把你的config对象作为数据,而不是把它作为配置,这可能是为什么自定义头文件没有按预期设置的原因。

ukqbszuj

ukqbszuj2#

试试这个,让我知道它是否有效。

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

注意:请确保您的服务器已设置为使用Access-Control-Allow-Headers响应该URL上的OPTIONS请求:授权标头。

ygya80vv

ygya80vv3#

问题在于你传递header给axios.put()方法的方式。你已经包含了header对象作为方法的第二个参数,但是它应该作为第三个参数包含。
正确答案:

const response = axios.put(
      url, 
      {},
      {
        headers: {
          Authorization: 
          'Access-Control-Allow-Origin': ,
        },
      }
    );

相关问题