我有一个express
路线。我设置了一个header
and a cookie
然后我重定向。
router.get("/callback", async (req, res) => {
res.cookie("token", token, {
maxAge: COOKIE_EXPIRATION_MILLISECONDS
});
res.header("TEST", "HEADER");
res.redirect("/test");
});
当我击中时/test
, token
已设置且可用。我没有header
named TEST
。为什么我没有header
?我该如何通过header
通过redirect
?
您的标头可能会与响应一起发送,但当浏览器实际遵循重定向并请求新 URL 时,您将看不到该标头。浏览器不会这样做。请记住,当你这样做时res.redirect()
,它发送带有 302 状态和位置标头的响应。浏览器看到 302 并读取位置标头,然后向您的服务器发出新的浏览器请求以获取重定向的位置。先前响应中的标头不会添加到重定向位置的新请求中。
将此类数据传递给重定向请求的常用方法是:
-
将其放入查询字符串中将重定向的 URL 作为参数。当重定向的请求到来时,您的服务器将看到该查询字符串。
-
设置一个cookie。当重定向的请求到来时,您的服务器可以查看 cookie。
-
在服务器端会话对象中设置数据可以在下一个请求时访问。然后,当重定向的请求传入时,您的服务器可以查看会话。
只有上面的第一个选项(查询参数)是完全安全的,因为如果有来自同一用户的其他请求,其他选项可能会混淆数据属于哪个请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)