Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

660
Views
El backend de Express.js no guarda la cookie en el frontend de Nuxt.js

Creé un servidor de autorización con Express.js que funciona cuando se prueba con Postman, donde guarda el acceso y el token de actualización giratorio como cookies firmadas. Sin embargo, lo que olvidé por completo fue que mi backend y frontend son dos servidores y dominios completamente separados. Intenté habilitar Access-Control-Allow-Credentials , pero eso no funcionó. No recibo ningún mensaje de error, las cookies simplemente no se guardan.

Aquí está mi controlador de inicio de sesión desde el backend:

 const userLogin = async (req, res, next) => { const { email, password } = req.body; if (!email || !password) return res.sendStatus(400); try { const login = await loginUser(email, password); if (login == 'wrong_email_or_password') return res.status(200).json({ error: login }); res.header('Access-Control-Allow-Credentials', true); res.cookie('access', login.accessToken, { httpOnly: true, secure: (env != 'dev'), signed: true }); res.cookie('refresh', login.refreshToken, { httpOnly: true, secure: (env != 'dev'), signed: true }); res.status(200).json(login); } catch(e) { console.log(e.message); res.sendStatus(500) && next(); } }

Y después de encontrar algunos problemas de CORS, también hice app.use(cors({ origin: true, credentials: true })); , que resolvió el problema. Para la producción, probablemente también agregaré una lista blanca de CORS.

Y aquí está mi método Nuxt.js que se llamará al enviar el formulario de registro:

 async register () { try { if (!(this.firstname && this.lastname && this.username && this.email && this.password)) throw new Error('Pflichtfelder ausfüllen') const res = await axios.post(`${this.$axios.defaults.baseURL}register`, { firstname: this.firstname, lastname: this.lastname, username: this.username, email: this.email, password: this.password }, { withCredentials: true, credentials: 'include' }) console.log(res) this.$router.go() } catch (e) { this.error = e.message console.error(e) } }

Desearía poder proporcionar más información útil además de "no funciona, ayuda, por favor", pero como dije, no obtengo ningún error, así que realmente ni siquiera sé dónde buscar. :(

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Muy bien, parece que lo que estoy tratando de hacer es imposible. Las cookies provenientes de dominios de terceros no están permitidas, lo cual tiene sentido ahora que lo pienso...

Para cualquier persona interesada, mi solución es simplemente guardar ambos tokens en localStorage . Como estoy usando tokens de actualización rotativos, esto no es gran cosa.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!