Vercel Serverless函数生产环境无法读取请求头的问题求助
Vercel Serverless函数生产环境无法读取请求头的问题求助
我正在做一个Vercel项目,本地用vercel dev开发完全正常,但部署到Vercel无服务器生产环境后遇到了问题——我需要在GET请求里通过请求头传递邮箱、密码和ID这些凭证,本地测试没问题,但生产环境抛出了如下错误:
Error: TypeError: Cannot read properties of undefined (reading 'email') at module.exports (/var/task/api/user/user.js:16:16) at Server.<anonymous> (/opt/rust/nodejs.js:2:11027) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Server.<anonymous> (/opt/rust/nodejs.js:9:6760)
错误出现在这段代码中:
let email, pwd, userId; try { email = req.body.email || req.headers["email"] || req.headers?.email || null; pwd = req.body.pwd || req.headers["pwd"] || req.headers?.pwd || null; userId = req.body.participantId || req.headers["id"] || req.headers?.id || null; } catch (err) { console.error("Error parsing input:", err); return res.status(400).json("Bad Request"); }
客户端的GET请求代码:
axios.get(`/api/user/user/`, {headers: { "email": email, "pwd": pwd, id: participantId }}, { withCredentials: true }) .then((res) => res.data.fullName) .catch((err) => { console.log(err); return "Error loading participant"; })
我已经尝试的调试步骤:
- 分别在本地和生产环境打印
req.headers,两边都能看到邮箱、密码和ID的正确值 - 确保在无服务器函数里处理请求头时是大小写不敏感的
- 验证Axios确实正确发送了请求头
我的观察:
- 请求头确实已经发送到后端
- 但生产环境的无服务器函数就是读不到这些头
- 本地开发环境完全没有问题
我想请教的问题:
- 为什么无服务器函数在生产环境里读不到请求头?
- Vercel的无服务器环境有没有已知的会过滤某些请求头的问题?
- 我该怎么确保邮箱、密码、ID这些请求头能在生产环境里被正确传递和读取?
麻烦大家帮忙看看,谢谢了!
备注:内容来源于stack exchange,提问作者Lipe
相关产品推荐
相关产品推荐

