Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda