Express Sessions GET与POST请求

问题描述 投票:0回答:1

使用post方法时可以访问会话对象数据,但是使用get方法时会话对象数据为null。如何使用get方法访问会话对象数据。我正在使用快速会话。

前端代码

对于POST方法

axios.post(url,{params:data},{withCredentials: "true"})

对于GET方法

axios.get(url,{params:data},{withCredentials: "true"})

后端代码用于获取和发布请求的中间件。

router.use((req: Request, res: Response, next: NextFunction) => {
  console.log(req);
  if (req.session && req.session.username) next();
  else res.status(401).send("Unauthorized");
});
node.js axios express-session
1个回答
0
投票

axios.get()仅接受两个参数(而不是三个)。第一个是URL,第二个是选项。您正在axios.get()不在的第三个位置传递选项。因此,它永远不会看到withCredentials: true选项,因此不会发送会话cookie,因此您的服务器也不知道如何查找会话。

所以,从此更改:

axios.get(url,{params:data},{withCredentials: "true"})

至此:

axios.get(url,{withCredentials: "true"})

注意,axios.get()没有数据参数,因为GET不发送请求正文,只有POST或PUT发送正文。参见文档here


注意:这经常用axios咬人。 .post().get()需要不同数量的参数。

© www.soinside.com 2019 - 2024. All rights reserved.