Me encuentro con este problema:
Pude enviar la solicitud del cartero y recibir las cookies allí, sin embargo, en la interfaz cuando compruebo las cookies en el navegador no hay nada.
Las cookies no son visibles en la pestaña Aplicación > Cookies.
El código que uso para entregar registros y enviar la cookie:
// requirements const User = require('../models/User'); const jwt = require('jsonwebtoken'); // handle errors const handleErrors = (err) => { console.log(err.message, err.code); let errors = { first_name: '', last_name: '', email: '', password: '' }; // duplicate error code if (err.code === 11000) { errors.email = 'That email is already registered'; return errors; } // validation errors if (err.message.includes('User validation failed')) { Object.values(err.errors).forEach(({ properties }) => { errors[properties.path] = properties.message; }); } return errors; } const maxAge = 3 * 24 * 60 * 60; const createToken = (id) => { return jwt.sign({ id }, 'Dummy Secret', { expiresIn: maxAge }); } // module exporting module.exports.signup_post = async (req, res) => { const { first_name, last_name, email, password } = req.body; try { const user = await User.create({ first_name, last_name, email, password }); const token = createToken(user._id); res.cookie('jwt', token, { httpOnly: true, maxAge: maxAge * 1000 }); res.status(201).json({ user: user._id }); } catch (err) { const errors = handleErrors(err); res.status(400).json({ errors }); } };si alguien me pudiera orientar que hacer se lo agradeceria
ACTUALIZACIÓN: Hice algunas pruebas y los resultados fueron los siguientes: cuando ejecuté este código en la aplicación principal.js en el backend y envié una solicitud desde el front-end, las cookies aún estaban en mal estado, por lo que muy bien podría ser el Interfaz.
app.get('/set-cookies', (req, res) => { res.cookie('newUesr', false); res.cookie('isEmployee', true, { maxAge: 1000 * 60 * 60 * 24, httpOnly: true}); res.send('you got the cookies!'); }); app.get('/read-cookies', (req, res) => { const });Pero cuando lo hago a través de mis controladores en el código mostrado anteriormente, se atasca en las cookies configuradas como se muestra en esta imagen.
Aquí hay un enlace útil para comprender las cookies httpOnly y los métodos alternativos. ¿Cómo obtener una cookie solo HTTP en React?
Pude resolver el problema siguiendo estos pasos:
withCredntials: true y credentials: 'include' , por lo que la solicitud de recuperación sería así: fetch("http://localhost:9000/testAPI", { withCredntials: true, credentials: 'include' }) Tenga en cuenta que esto solo funciona con solicitudes GET , no solicitudes POST sin el segundo paso.
POST bloqueadas por cors, solo asegúrese de tener esta línea en su backend después de haber requerido cors por supuesto app.use(cors({credentials: true, origin: true})); usar * o http://localhost:3000 (independientemente del número de puerto) en lugar de verdadero parece dar el error. NOTA: De acuerdo con @ikhvjs withCredntials: true no es obligatorio, sin embargo, todavía tengo que probar esto, así que inténtelo bajo su propio riesgo.
Gracias a todos por la ayuda :D