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

200
Views
Nodo/Express No puedo configurar el encabezado en mi ruta

Tengo un backend que usa Node y el framework Express y un frontend en React. El código está en Typescript.

Mi backend usa el cliente de búsqueda elástico para obtener los datos, pero no creo que ese sea el problema.

Necesito recuperar un parámetro que obtengo del backend a través del encabezado http de mi respuesta en mi interfaz.

Para hacer esto, utilicé estas dos funciones del documento Express http://expressjs.com/en/4x/api.html#res.set y http://expressjs.com/en/4x/api.html#res. json

Así que escribí el siguiente código para mi ruta:

 searchRouter.get('/search', (asyncHandler(async (req, res) => { const response = await client.search<HitResult>({ index: my-index, scroll: "1m", body: { My elastic request } }); res.set('data_to_send',response.body.data_to_send); console.log('is there a hearder? ', res.headersSent) //always return false res.json(response); })));

Pero el encabezado no cambia con este método. Así que traté de crear una función asíncrona para llenar mi encabezado con el siguiente código:

 async function buildHeader(response: express.Response<any, Record<string, any>>, headerName: string, headerValue: string | undefined): Promise<any> { response.header(headerName,headerValue); } searchRouter.get('/search', (asyncHandler(async (req, res) => { const response = await client.search<HitResult>({ index: my-index, scroll: "1m", body: { My elastic request } }); await buildHeader(res, 'data_to_send', response.body.data_to_send); console.log('is there a hearder? ', res.headersSent) //always return false res.json(response); })));

Haga lo que haga la cabecera no cambia y mantiene su forma básica, la siguiente:

 content-length: "50643" content-type: "application/json; charset=utf-8"

¿Alguien ve lo que estoy haciendo mal y podría ayudarme, eso me salvaría? Gracias por adelantado :)

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Como me señaló Itai, mi problema provino del middleware que estaba usando, CORS. Agregando en las opciones de este middleware los dos campos siguientes:

 'allowedHeaders': ['data_to_send'], 'exposedHeaders': ['data_to_send'],

Todo funciona como se esperaba. Para obtener más información: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers

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!