Express JS中res.redirect()无法正常工作问题求助
问题原因与解决方案
核心问题
你遇到的不是Node或Windows更新的问题,而是Postman的重定向行为+HTTP状态码默认规则导致的:
- Express 的
res.redirect("/")默认返回302 Found状态码。按照HTTP规范,302允许客户端保留原请求方法(这里是POST)访问重定向目标,而Postman默认配置会严格保留原请求方法。你的/路由只注册了GET方法,因此收到POST请求时就返回Cannot POST /的404错误。 - 之前正常要么是Postman旧版本默认会将302重定向的请求方法改为GET,要么是当时的测试场景存在差异。
解决办法
1. 强制指定303状态码(推荐)
HTTP 303 See Other明确要求客户端必须用GET方法访问重定向后的资源,修改重定向代码即可:
app.post("/me", function (req, res) { res.redirect(303, "/"); });
这样无论客户端配置如何,都会用GET请求/,匹配你已有的GET路由。
2. 修改Postman的重定向配置
在Postman当前请求的Settings面板中:
- 开启"Automatically follow redirects"选项
- 关闭"Preserve original HTTP method"选项
调整后Postman遇到302重定向时会自动将请求方法改为GET,即可正常访问/的GET路由。
3. 临时 workaround(不推荐)
就是你当前使用的给/添加POST路由的方式,但这不符合HTTP重定向的规范,只是临时绕开问题。
内容的提问来源于stack exchange,提问作者Taylor Lepper
相关产品推荐
相关产品推荐

