{ res.cook-6ren">
gpt4 book ai didi

node.js - 为什么我的 header 没有在重定向时设置?

转载 作者:行者123 更新时间:2023-12-02 17:16:12 25 4
gpt4 key购买 nike

我有一条快速路线。我设置了一个 header 和一个 cookie 然后我重定向。

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

当我点击 /test 时,token 已设置并可用。我没有名为 TESTheader。为什么我没有 header?如何通过 redirect 传递 header

最佳答案

您的 header 可能与响应一起发送,但当浏览器实际遵循重定向然后请求新 URL 时,您将看不到该 header 。浏览器不会那样做。请记住,当您执行 res.redirect() 时,它会发送一个带有 302 状态和位置 header 的响应。浏览器看到 302 并读取位置 header ,然后向您的服务器发出新的浏览器请求以获取重定向的位置。先前响应的 header 不会添加到重定向位置的新请求中。

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

  1. 将其作为参数放入重定向 URL 的查询字符串中。当重定向请求到达时,您的服务器将看到该查询字符串。
  2. 设置一个 cookie。然后您的服务器可以在收到重定向请求时查看 cookie。
  3. 在服务器端 session 对象中设置数据,可以在下一个请求中访问。然后,您的服务器可以在重定向请求进入时查看 session 。

只有上面的第一个选项(查询参数)是完全安全的,因为如果同一用户有其他请求,其他选项可能会对数据属于哪个请求感到困惑。

关于node.js - 为什么我的 header 没有在重定向时设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46133557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com