Tengo mi front-end y back-end en diferentes dominios. Estoy tratando de realizar una solicitud de venta con Axios para autenticar a un usuario mediante una sesión rápida. La llamada funciona bien, pero parece que el servidor no establece la cookie en los encabezados de la respuesta. Aquí está mi código:
Este es el código en la parte delantera:
Axios.post('/users/authenticate', { //DATA }, {withCredentials: true}) .then((response) => { console.log(response); }) .catch((error) =>{ console.log(error); });Luego mi código en el servidor NodeJS. Esto es para permitir cors:
app.use(cors({ origin: ['http://localhost:3000'], credentials: true, methods: ['POST', 'PUT', 'GET', 'OPTIONS', 'HEAD', 'DELETE'], exposedHeaders: ["set-cookie"] }));Luego, para configurar la cookie:
router.use(session({ secret: 'the secret', cookie: {maxAge: 2000 * 60, sameSite: 'none', secure: true}, store: store, resave: true, saveUninitialized: true, }));Finalmente mi encabezado de respuesta:
Probé todas las soluciones que encontré en StackOverflow y otros blogs y foros con las opciones en cors y todavía no funcionan en Chrome, Edge ni Firefox, pero sí en Postman.
Descubrí el problema. Todavía no estoy seguro de lo que está sucediendo en el fondo.
Tuve que agregar esta línea al comienzo de mi código:
app.set('trust proxy', 1);Ahora funciona. No puedo ver la cookie en la pestaña de la aplicación en las herramientas de desarrollo, pero la veo en los encabezados de respuesta y funciona como se esperaba.
Supongo que hay un proxy entre mi front-end y back-end. Si alguien puede explicarlo se lo agradeceré.