获得未经授权的错误

时间:2018-06-18 22:28:19

标签: javascript

整体代码有点乱,因为我一直在尝试不同的东西,而且还没有把它们全部组织起来。我正在尝试使用用户名和新电子邮件向/ api / protected发送PUT请求以更新电子邮件。这是一个受保护的路由,需要authtoken才能访问我传入的路径。我收到了未经授权的错误。

function updateProfile(username, email, authToken, callback) {
 const settings = {
    url: '/api/protected',
    data: {      
      username: `${username}`,      
      email: `${email}`,
    headers: {      
      authorization: `Bearer ${authToken}`
    }, 
   },
    dataType: 'json',
    type: 'PUT',
    success: callback,
    error: error
  };
  $.ajax(settings); 
}

这是ajax请求,现在在服务器端代码中:

app.put('/api/protected', jwtAuth, (req, res) => {
 const updatedItem = User.update({username: req.body.username}, {$set:{email: req.body.email}})  
 return res.status(201).json({updatedItem});  
});

1 个答案:

答案 0 :(得分:1)

如果我们查看the documentation,我们会看到headers属性应该是发送到$.ajax的设置,而不是data属性。要解决此问题,只需将其移出data属性即可。例如:

function updateProfile(username, email, authToken, callback) {
  const settings = {
    url: '/api/protected',
    data: {
      username: `${username}`,
      email: `${email}`,
    },
    headers: {
      authorization: `Bearer ${authToken}`
    },
    dataType: 'json',
    type: 'PUT',
    success: callback,
    error: error
  };
  $.ajax(settings);
}

请注意,我还稍微清理了缩进,以便更容易看到正确的位置。