Я программирую со стеком MERN, и я наткнулся на кирпичную стену при использовании express -сессии. Кажется, я не могу установить файлы cookie, когда мой интерфейс localhost:3000
достигает конечных точек в моем бэкэнде localhost:8080
. Файлы cookie устанавливаются отлично, когда я нахожусь на localhost:8080
и достигаю конечной точки в моем бэкэнде localhost:8080
. Как я могу решить эту проблему? Я хочу, чтобы реакция могла установить httpOnly
cook ie, когда я регистрирую своего пользователя, или регенерировать cook ie, когда я вхожу в систему, или уничтожать сеанс, когда я выхожу из системы. et c ... Я не совсем уверен, что это проблема cors, с которой я имею дело. Замечу, что эти файлы cookie устанавливаются, потому что я их тестировал. проблема в том, что я не вижу файлы cookie, устанавливаемые из моего интерфейса.
const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const session = require('express-session')
const cors = require('cors')
const MongoStore = require("connect-mongo")(session)
const PORT = process.env.PORT || 8080;
const config = require('config')
const server = express();
server.set('trust proxy', 1);
server.use(express.json());
server.use(express.urlencoded({ extended: true }))
server.use(cors({
origin: "http://localhost:3000",
optionsSuccessStatus: 200,
credentials: true
}))
server.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, Set-Cookie");
res.header("Access-Control-Allow-Methods", "POST, GET, HEAD, DELETE, PUT, OPTIONS");
res.header("Access-Control-Allow-Credentials", "true")
if ('OPTIONS' == req.method) {
res.sendStatus(200);
}
else {
next();
}
});
mongoose.connect(process.env.MONGODB_URI || config.get("mongo_db_key"),
{
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
})
.then(() => console.log("MongoDB Connected"))
.catch((err) => console.log(err))
server.use(session({
secret: 'keyboard cat',
resave: false ,
saveUninitialized: false,
cookie: {
secure: false,
maxAge: 1000 * 60 * 60 * 24,
},
store: new MongoStore({
mongooseConnection: mongoose.connection
})
}))
const auth = require('./routes/API/auth');
server.use('/account', auth);
server.listen(PORT, () => console.log(`listening on port: ${PORT}`));