发送响应之前获取响应标头

问题描述 投票:0回答:1

如何在发送请求之前获取响应标头?

例如:

router.get("/", someMiddlewareThatSetsAHeader(), (req, res) => {
    console.log(res.getHeaders()["set-cookie"]); // undefined
    
    res.redirect("/anotherPage");

    console.log(res.getHeaders()["set-cookie"]); // the header value
})

尝试在发送响应之前记录标头会导致标头未定义。

javascript node.js express http response
1个回答
0
投票

好的,所以当您使用 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 中发送响应之前使用中间件函数来管理标头!

© www.soinside.com 2019 - 2024. All rights reserved.