如何在发送请求之前获取响应标头?
例如:
router.get("/", someMiddlewareThatSetsAHeader(), (req, res) => {
console.log(res.getHeaders()["set-cookie"]); // undefined
res.redirect("/anotherPage");
console.log(res.getHeaders()["set-cookie"]); // the header value
})
尝试在发送响应之前记录标头会导致标头未定义。
好的,所以当您使用 Node.js 并希望在发送响应之前访问或修改响应标头时,您需要使用中间件函数。
假设您有一条类似的路线
router.get("/", someMiddlewareThatSetsAHeader, (req, res) => { ... })
这里,someMiddlewareThatSetsAHeader 是一个在实际路由处理程序之前运行的函数。
在 someMiddlewareThatSetsAHeader 中,您可以使用
res.setHeader("HeaderName", "HeaderValue")
设置标头。这可确保在发送响应之前设置标头。
然后,在路由处理函数中,您可以使用
res.getHeaders()["HeaderName"]
访问这些标头。这样,您可以在发送响应之前查看或更改标头。
这是一个例子:
const someMiddlewareThatSetsAHeader = (req, res, next) => {
res.setHeader("Set-Cookie", "cookie_value");
next();
};
router.get("/", someMiddlewareThatSetsAHeader, (req, res) => {
console.log(res.getHeaders()["set-cookie"]);
res.redirect("/anotherPage");
});
因此,请记住在 Node.js 中发送响应之前使用中间件函数来管理标头!