Express 会话不会在来自 React 前端的 api 次调用之间持续存在
Express session not persisting between api calls from react front end
在问这个问题之前,我确实看过其他类似的问题,但其中 none 个已经对您有所帮助。
我有一个使用 axios 的反应前端,使用 express 和 express 会话对节点后端进行 api 调用。在我的前端输入登录信息后,我将它发送到我的后端,在那里我设置了一个会话和 return 对我在 localStorage 中设置的前端的响应以用于客户端验证。
登录后,当我尝试从前端访问受保护的 api 端点时,会话中没有我设置的任何信息,因此出现错误。但是,如果我尝试从邮递员登录并访问受保护的端点,它工作得很好。
这是我的快速会话配置:
router.use(session({
secret: 'notGoingToWork',
resave: false,
saveUninitialized: true
}))
这是我通过 axios 进行的 api 调用(登录后):
axios.get(`http://localhost:5000/users/personNotes/${JSON.parse(userData).email}`)
.then(response => console.log(response);
我不知道问题出在哪里,希望得到任何帮助。提前致谢!
尝试使用 withCredentials
axios(`http://localhost:5000/users/personNotes/${JSON.parse(userData).email}`, {
method: "get",
withCredentials: true
})
或
axios.defaults.withCredentials = true
您可以使用 axios 尝试 withCredentials
到 true
。
对于 fetch 和 credentials
到 include
也可以。
fetch(URL,
{
credentials: 'include',
method: 'POST',
body: JSON.stringify(payload),
headers: new Headers({
'Content-Type': 'application/json'
})
})
将 fetch 与
一起使用
credentials: 'include'
我还必须在 Express App.js 中添加以下内容。
请注意,'Access-Control-Allow-Origin' 无法使用凭据设置为“*”。它必须使用特定的域名。
res.setHeader(
'Access-Control-Allow-Origin',
'http://localhost:3000'
);
res.setHeader('Access-Control-Allow-Credentials', 'true');
在问这个问题之前,我确实看过其他类似的问题,但其中 none 个已经对您有所帮助。
我有一个使用 axios 的反应前端,使用 express 和 express 会话对节点后端进行 api 调用。在我的前端输入登录信息后,我将它发送到我的后端,在那里我设置了一个会话和 return 对我在 localStorage 中设置的前端的响应以用于客户端验证。
登录后,当我尝试从前端访问受保护的 api 端点时,会话中没有我设置的任何信息,因此出现错误。但是,如果我尝试从邮递员登录并访问受保护的端点,它工作得很好。
这是我的快速会话配置:
router.use(session({
secret: 'notGoingToWork',
resave: false,
saveUninitialized: true
}))
这是我通过 axios 进行的 api 调用(登录后):
axios.get(`http://localhost:5000/users/personNotes/${JSON.parse(userData).email}`)
.then(response => console.log(response);
我不知道问题出在哪里,希望得到任何帮助。提前致谢!
尝试使用 withCredentials
axios(`http://localhost:5000/users/personNotes/${JSON.parse(userData).email}`, {
method: "get",
withCredentials: true
})
或
axios.defaults.withCredentials = true
您可以使用 axios 尝试 withCredentials
到 true
。
对于 fetch 和 credentials
到 include
也可以。
fetch(URL,
{
credentials: 'include',
method: 'POST',
body: JSON.stringify(payload),
headers: new Headers({
'Content-Type': 'application/json'
})
})
将 fetch 与
一起使用credentials: 'include'
我还必须在 Express App.js 中添加以下内容。
请注意,'Access-Control-Allow-Origin' 无法使用凭据设置为“*”。它必须使用特定的域名。
res.setHeader(
'Access-Control-Allow-Origin',
'http://localhost:3000'
);
res.setHeader('Access-Control-Allow-Credentials', 'true');