Javascript 无法通过变量设置标题

Javascript 无法通过变量设置标题,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我正在尝试将标头中的令牌发送到一个端点,该端点验证令牌并简单地返回布尔值 这是我的密码: const checkLoggedIn = async () => { let token = localStorage.getItem("user"); if (token === null) { localStorage.setItem("user", ""); token = ""; }

我正在尝试将标头中的令牌发送到一个端点,该端点验证令牌并简单地返回布尔值

这是我的密码:

const checkLoggedIn = async () => {
  let token = localStorage.getItem("user");
  if (token === null) {
    localStorage.setItem("user", "");
    token = "";
  }

  console.log(token);

  const tokenRes = await axios.post(
    "http://localhost:5000/api/auth/user/tokenIsValid",
    null,
    {
      headers: {
        "x-auth-token": token,
      },
    }
  );

  console.log(tokenRes.data);
第一个日志是确保im实际从localStorage获取令牌。 第二个日志应该是控制台日志true或false,这是post请求返回的结果。 当我运行post请求时,我一直收到500个错误。但是,如果我将实际的令牌传递给报头,而不是令牌变量,它将按预期工作

即使当我收到错误时,当我查看控制台并看到发送的头时,我看到我确实发送了令牌,但仍然是一个错误

我不明白为什么它不接受token变量

我是初学者,所以如果我不够清楚,我道歉

正如你所看到的,我可以记录令牌,这样我就知道我得到了它。您还可以看到令牌正在传递到x-auth-token。但它回来时是无效的。如果我直接传递相同的令牌,所有操作都很好

以下是我的端点代码:

router.post("/user/tokenIsValid", async (req, res) => {
try {
const token = req.header("x-auth-token");
if (!token) return res.json(false);

const verified = jwt.verify(token, config.get("jwtSecret"));
if (!verified) return res.json(false);

const user = await User.findById(verified.id);
if (!user) return res.json(false);

return res.json(true);
} catch (err) {
res.status(500).json({ error: err.message });
}
});

问题是当第一次向用户发布jwt时。我将令牌作为JSON.stringify(令牌)传递。我删除了JSON.stringify(),它成功了。

你能检查一下网络控制台,看看在你调用该函数时,它的(令牌)是否真的被传递了吗?在标头中,我看到令牌被传递了。错误响应为“无效令牌”。但是,如果我直接传入令牌,则将起作用。如果有帮助的话,我添加了一个屏幕截图。你能在你的端点url中console.log看看它是否与屏幕截图中显示的格式相同。我在端点中添加了日志,它记录了令牌,我得到了以下信息:服务器运行在端口5000[0]MongoDB连接上。。。[0]“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.EYJPZCI6IJVMNWZJJK1YTG1YTNLNJMXMZNLZTU4NYISIMLHDCI6MTYWMDU2NZMZZZOCWIZHWIJOXNJANGTCWOTM4FQ.KMP0KXUBDE6HOFJJJJJJJMJT\U iAVYpBW2C4”问题似乎在于终结点代码对该令牌进行消毒的方式。
Axios.post
正在正确执行其工作并成功发送令牌。