You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express重定向传参时出现Cannot GET路由访问报错如何解决

报错根因

三个核心问题导致404错误:

  • URL拼接规则错误:查询参数的起始标识是?,错误使用路径分隔符/拼接参数,会把查询参数变成路径的一部分,服务端没有注册/verified/error=true&message=xxx对应的路由,自然返回找不到资源的错误。
  • 路由逻辑缺失:原有路由没有读取查询参数的逻辑,即使URL格式正确,渲染页面时也无法拿到传递的提示信息。
  • 参数传递未做转义:直接拼接字符串作为URL参数,遇到特殊字符、空格、中文时会出现参数截断、乱码问题。
修复方案
  1. 修正重定向代码的URL格式,路径和查询参数之间用?分隔,多参数之间用&分隔,同时对参数内容做URL转义:
let message = "An error occurred while updating user record to show verified."
// 注意:路径和参数间用?分隔,参数用encodeURIComponent转义
res.redirect(`/verified?error=true&message=${encodeURIComponent(message)}`)

*注:原代码中ocoured、ahow为拼写错误,已同步修正为正确拼写occurred、show。

  1. 修正/verified路径的路由逻辑,从请求的query对象中读取传递的参数,注入到渲染的模板中:
app.get("/verified", (req, res) => {
  // 从查询参数中解构出error和message
  const { error, message } = req.query;
  // 将参数传给前端模板使用
  res.render("auth-verified-email", { error, message });
})
报错对应说明

触发的报错信息:

Cannot GET /verified/error=true&message=Link%20has%20expired%20.Please%20sign%20up%20again

就是错误拼接URL后,请求路径和注册的路由不匹配触发的标准404响应,按上述方案修改后即可正常传递参数完成跳转。

内容的提问来源于stack exchange,提问作者Badr-Eddine El mostaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 17:06:28