为什么我的标题没有设置为重定向?

时间:2017-09-09 17:56:28

标签: express

我有express路线。我设置了headercookie然后重定向。

router.get("/callback", async (req, res) => {
    res.cookie("token", token, {
        maxAge: COOKIE_EXPIRATION_MILLISECONDS
    });
    res.header("TEST", "HEADER");
    res.redirect("/test");
});

当我点击/test时,token已设置且可用。我没有名为header的{​​{1}}。为什么我没有TEST?如何通过header传递header

1 个答案:

答案 0 :(得分:2)

您的标头很可能与响应一起发送,但是当浏览器实际遵循重定向并且然后请求新网址时,您将无法看到该标头。浏览者不这样做。请记住,当您执行res.redirect()时,它会发送一个302状态和位置标头的响应。浏览器看到302并读取位置标题,然后向服务器发出新的浏览器请求以获取重定向的位置。上一个响应中的标题不会添加到重定向位置的新请求中。

将这样的数据传递给重定向的请求的常用方法是:

  1. 将重定向的URL作为参数放入查询字符串中。然后,当重定向的请求进入时,您的服务器将看到该查询字符串。
  2. 设置Cookie。您的服务器可以在重定向请求进入时查看Cookie。
  3. 在服务器端会话对象中设置数据,可在下次请求时访问。然后,当重定向的请求进入时,您的服务器可以查看会话。
  4. 只有上面的第一个选项(查询参数)是完全安全的,因为如果有来自同一用户的其他请求,其他人可能会对数据属于哪个请求感到困惑。