NodeJS/Express – 无法读取所有的Req.Headers

huangapple go评论87阅读模式
英文:

NodeJS/Express - Cannot Read All Req.Headers

问题

使用ReactJs前端和NodeJs/Express后端构建一个简单的ToDo应用程序。我配置了前端以将userId包含为请求头:

  1. export default function authHeader() {
  2. const user = JSON.parse(localStorage.getItem('user'));
  3. if (user && user.accessToken) {
  4. // return { Authorization: 'Bearer ' + user.accessToken }; // 用于Spring Boot后端
  5. return {
  6. 'x-access-token': user.accessToken,
  7. 'userid': user.id
  8. }; // 用于Node.js Express后端
  9. } else {
  10. return {};
  11. }
  12. }

这个头部随着Axios请求一起被包含:

  1. // 列出所有群组成员
  2. listMembers() {
  3. return http.get(`/group`, { headers: authHeader() });
  4. }

因此,我可以在请求中看到这些头部:

NodeJS/Express – 无法读取所有的Req.Headers

我的身份验证中间件的一部分引用了访问令牌:

  1. verifyToken = (req, res, next) => {
  2. let token = req.headers["x-access-token"];
  3. if (!token) {
  4. return res.status(403).send({
  5. message: "未提供令牌!"
  6. });
  7. }
  8. jwt.verify(token, config.secret, (err, decoded) => {
  9. if (err) {
  10. return res.status(401).send({
  11. message: "未经授权!"
  12. });
  13. }
  14. req.userId = decoded.id;
  15. next();
  16. });
  17. };

顶部的req.headers行可以轻松地从头部"“x-access-token”中提取令牌。然而,出于调试目的,我尝试提取头部userId值,使用let token = req.headers["userid"];,但在我的调试工具中它只是返回未定义。为什么它能够提取"x-access-token"头部,但不能提取userId?我的最终目标是在后端SQL查询中引用req.header userId值,这只是一个测试。

英文:

Building a simple ToDo app with ReactJs frontend and NodeJs/Express backend. I configured my frontend to include userId as a request header:

  1. export default function authHeader() {
  2. const user = JSON.parse(localStorage.getItem('user'));
  3. if (user && user.accessToken) {
  4. // return { Authorization: 'Bearer ' + user.accessToken }; // for Spring Boot back-end
  5. return {
  6. 'x-access-token': user.accessToken,
  7. 'userid': user.id
  8. }; // for Node.js Express back-end
  9. } else {
  10. return {};
  11. }
  12. }

This header is included with the Axios request:

  1. // List all Group Members
  2. listMembers() {
  3. return http.get(`/group`, { headers: authHeader() });
  4. }

Consequently, I can see the headers in the request:

NodeJS/Express – 无法读取所有的Req.Headers

Part of my auth middleware references the access token:

  1. verifyToken = (req, res, next) => {
  2. let token = req.headers["x-access-token"];
  3. if (!token) {
  4. return res.status(403).send({
  5. message: "No token provided!"
  6. });
  7. }
  8. jwt.verify(token, config.secret, (err, decoded) => {
  9. if (err) {
  10. return res.status(401).send({
  11. message: "Unauthorized!"
  12. });
  13. }
  14. req.userId = decoded.id;
  15. next();
  16. });
  17. };

The req.headers lines near the top is able to pull the token from header "x-access-token" with no problem. HOWEVER - for debug purposes, I have tried to pull the header userId value instead using let token = req.headers["userid"]; but this simply comes back as undefined in my debug tools. Why can it pull x-access token header but not userId? My eventual goal is to refer to the req.header userId value in backend SQL queries, this is just a test.

答案1

得分: 0

在管道中有一个大写错误。 @Sardar的评论是正确的,请确保一切拼写正确并且大小写匹配。

英文:

It ended being a capitalization error somewhere in pipeline. @Sardar's comment was on the money, make sure everything is spelled correctly and matches case.

huangapple
  • 本文由 发表于 2023年1月6日 21:59:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/75031904.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定