Mi problema: cuando voy a la dirección del servidor (entonces estoy usando el método get) funciona como me gustaría que funcionara, el ID de sesión no cambia con las solicitudes HTTP, pero cuando estoy usando el método de fetch del cliente para obtener a la dirección del servidor, el ID de sesión siempre cambia y eso es un defecto, lo que no quiero.
¿Alguna idea de por qué sucede esto y cómo podría solucionarlo?
Código de cómo se configuran mis sesiones:
const session = require('express-session'); ... app.set("trust proxy", 1); app.use( session({ secret: process.env.SESSION_SECRET, saveUninitialized: true, resave: false, cookie: { secure: false, sameSite: true, }, }) ); ... app.get("/lobby/:id", (req, res) => { console.log(req.sessionID); req.session.test = 1; });petición del cliente
useEffect(() => { fetch(getServerAdress() + "/lobby/" + code, { method: "GET", }) .then((response) => response.json()) .then((data) => setLoading(false)) .catch(() => setLoadingText("Failed to join the lobby")); // eslint-disable-next-line react-hooks/exhaustive-deps }, []);Como dijo Mat J., fetch no envía cookies de origen cruzado de forma predeterminada, así que tuve que cambiarlo:
fetch(getServerAdress() + "/lobby/" + code, { method: "GET", credentials: "include", }También tuve que habilitar las credenciales y el origen de CORS en mi servidor:
const cors = require("cors"); app.use(cors({ credentials: true, origin: true }));