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

116
Views
Express no establece cookies con el indicador httpOnly

Tengo mi servidor Express.js back-end que tiene función de inicio de sesión. Después de que el usuario inicie sesión, obtiene 2 tokens: token de acceso y token de actualización. Lo que quiero hacer es devolver el token de actualización del servidor como cookie httpOnly .

Aquí hay una paz de código de esta función:

 const { refreshToken, accessToken } = await jwtService.updateTokens({ userId: client.id, username: client.username }, { transaction }) logger.info(`Client ${client.email} has been successfully signed in!`) await transaction.commit() return res .status(200) .cookie("refreshToken", JSON.stringify(refreshToken), { httpOnly: true, secure: false }) .json({ accessToken, reopening: reopening ? client.username : null })

Básicamente, el navegador simplemente no configura esta cookie como httpOnly y, en realidad, no la configura en absoluto. Entonces, estaba tratando de hacer ping a este punto final con el cartero, y funciona:

ingrese la descripción de la imagen aquí

En el cuerpo de respuesta tengo un token de acceso y en la cookie httpOnly tengo este token de actualización.

Entonces, el problema es, ¿por qué el navegador no lo guarda? Encontré un par de soluciones y todas eran sobre credenciales cors y axios . Uso 2 servidores express : 1 es para el back-end normal y 1 es para el front-end.

Así es como se ve la "ruta" desde el front-end hasta el back-end:

Función de inicio de sesión que envía una solicitud al servidor front-end express :

 const api = axios.create({ baseURL: apiUrl, headers: { 'Content-Type': 'application/json' } }) export const signIn = async payload => { try { const { data } = await api.post('s-i', payload) return data } catch (e) { return e.response.data } }

El servidor front-end express envía una solicitud al back-end real:

 const api = axios.create({ baseURL: process.env.NODE_ENV === "development" ? process.env.PNB_API_DEV : process.env.PNB_API_PROD, }) const router = Router() router.post('/s-i', async (req, res) => { try { const { data } = await api.post('/sign-in', req.body) res.json(data) } catch (e) { return res.status(e.response.status).json(e.response.data) } });

Y luego esa función que estaba al principio.

Entonces, ¿cómo hago para que el navegador obtenga y guarde estas cookies httpOnly ? Si realmente se trata de credenciales o cors , ¿dónde debo poner esa configuración?

PD

Puerto back-end - 3001 y puerto front-end - 8010.

about 4 years ago · Juan Pablo Isaza
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!