快速会话不会持续
Express session don't persist
我正在制作一个 React 项目,我正在使用 Express 作为后端。我将 http://mini-api.moonlab.ga
设置为 Express 服务器的虚拟主机。
我用 Fetch
:
向快递服务器发送了一个 HTTP 请求
fetch("http://mini-api.moonlab.ga/login/", {
credentials: "include"
})
如我所料,出现了 CORS 错误。所以我安装了 cors
包,并在 Node.js:
中设置了这样的代码
app.use(cors({
origin: true,
credential: true
}));
我这样从服务器响应客户端:
app.get("/login", (req, res) => {
const session = req.session;
if (session.miniAccount == undefined) {
session.miniAccount = Math.floor(Math.random() * 1000000);
}
res.writeHead(200, {"Access-Control-Allow-Credentials": true});
res.write(String(session.miniAccount));
res.end();
})
在我这样做之后,没有任何 CORS 错误,但会话不会持续存在。当我再次发送请求时,会话数据一直在变化。
那么如何让会话持久化呢?
服务器的会话代码:
app.use(express_session({
secret: secret.app_key,
resave: false,
saveUninitialized: true
}));
您可以尝试在 cookie 中设置一个 maxAge 值
...
const session = require("express-session");
...
app.use(
session({
secret: secret.app_key,
resave: false,
saveUninitialized: true
cookie: {
maxAge: 3600000 //session expires in 1 hr
}
})
);
我通过编辑 package.json
.
自己解决了
我在 package.json
中添加了 "proxy": "mini-api.moonlab.ga"
。
比我编辑的 fetch()
.
- 上一个
fetch("http://mini-api.moonlab.ga/login")
- 新
fetch("/login")
它奏效了。
我正在制作一个 React 项目,我正在使用 Express 作为后端。我将 http://mini-api.moonlab.ga
设置为 Express 服务器的虚拟主机。
我用 Fetch
:
fetch("http://mini-api.moonlab.ga/login/", {
credentials: "include"
})
如我所料,出现了 CORS 错误。所以我安装了 cors
包,并在 Node.js:
app.use(cors({
origin: true,
credential: true
}));
我这样从服务器响应客户端:
app.get("/login", (req, res) => {
const session = req.session;
if (session.miniAccount == undefined) {
session.miniAccount = Math.floor(Math.random() * 1000000);
}
res.writeHead(200, {"Access-Control-Allow-Credentials": true});
res.write(String(session.miniAccount));
res.end();
})
在我这样做之后,没有任何 CORS 错误,但会话不会持续存在。当我再次发送请求时,会话数据一直在变化。
那么如何让会话持久化呢?
服务器的会话代码:
app.use(express_session({
secret: secret.app_key,
resave: false,
saveUninitialized: true
}));
您可以尝试在 cookie 中设置一个 maxAge 值
...
const session = require("express-session");
...
app.use(
session({
secret: secret.app_key,
resave: false,
saveUninitialized: true
cookie: {
maxAge: 3600000 //session expires in 1 hr
}
})
);
我通过编辑 package.json
.
我在 package.json
中添加了 "proxy": "mini-api.moonlab.ga"
。
比我编辑的 fetch()
.
- 上一个
fetch("http://mini-api.moonlab.ga/login")
- 新
fetch("/login")
它奏效了。