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

Node/Express中req.query.token截断与ER_PARSE_ERROR问题求助

问题分析与解决方案

一、SQL语法错误

你的SQL查询语句完全错误,SELECT语句不能搭配VALUES子句——VALUES是INSERT语句用来插入数据的语法。如果要查询resettoken表中匹配指定邮箱和token的记录,必须用WHERE条件做过滤。

错误代码:

connection.query('SELECT * FROM resettoken(email,token) VALUES (?, ?)', [email, token], function(err, result) {

修正后的代码:

connection.query('SELECT * FROM resettoken WHERE email = ? AND token = ?', [email, token], function(err, result) {

二、Token截断问题

URL中的+号会被默认解析为空格,再加上你的token包含/这类特殊字符,Express的req.query默认解析逻辑会把+转成空格,同时未编码的特殊字符也会导致解析截断。

解决方法:用decodeURIComponent对获取到的token做解码,还原原始内容:

const token = decodeURIComponent(req.query.token);
const email = req.query.email;

另外需要注意,前端生成该URL时,必须用encodeURIComponent对token编码,确保特殊字符被正确转义,示例:

const encodedToken = encodeURIComponent('Wp+JCrZGAHEbDgyC4BExpWkX17Y0eurUZMu0zmu7J/5S3ChuRXoi3qdBFtdt6UlOJvMlsR4dOlMwlUS/u9UbWQ==');
const url = `http://localhost:5000/reset-password?token=${encodedToken}&email=test@test.com`;

内容的提问来源于stack exchange,提问作者Boom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:41:25