首页 > 解决方案 > 带有标头的 Express JS 重定向

问题描述

使用 express JS 我正在尝试向我返回的重定向添加一些标头但是,我尝试的所有内容都适用于响应标头,而不适用于重定向的请求标头。IE,使用开发人员工具检查它时,我可以看到响应标头,但是在进行下一次调用时,我看不到请求标头

req.headers['x-custom-header'] = 'value'
res.setHeader('x-custom-header', 'value')    
res.redirect('example.com')

有人可以解释响应和请求标头如何在 ExpressJS 上工作吗?

标签: node.jsexpresshttp-headers

解决方案


重定向只是进行重定向。它告诉浏览器使用标准的非自定义标头转到该新位置。您无法在重定向后的下一个请求上设置自定义标头。浏览器根本不这样做。

在重定向中传递某些类型的参数的常用方法是将它们放在重定向 URL 的查询字符串中,或​​者在某些情况下,将它们放在 cookie 中。在 cookie 中的查询字符串参数和数据的这两种情况下,当浏览器向您发送重定向 URL 的请求时,您的服务器将可以使用这些参数。

还可能值得重新审视为什么您首先要重定向,并且可能有不同的数据/ URL 流首先不需要重定向。我们必须更多地了解这个实际操作试图完成什么才能在那里提出建议。

如果您的请求正在由 Ajax 调用处理,那么您可以对接收 Ajax 调用结果的代码进行编程以执行您希望它执行的任何操作(包括添加自定义标头),但如果是浏览器处理重定向并更改页面 URL 来加载新页面,它不会关注重定向响应上的自定义标头。

任何人都可以解释响应和请求标头如何在 ExpressJS 上工作吗?

Express 正在按照您的要求进行操作。它将自定义标头附加到返回浏览器的响应中。浏览器不会将这些相同的标头附加到对重定向 URL 的下一个请求。所以,这不是 Express 的事情,而是浏览器的事情。


推荐阅读