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

432
Views
application/octet-stream Tipo de contenido obtener cuerpo de solicitud nulo

Hay un problema en application/octet-stream al enviar la solicitud al servidor node.js. El cuerpo de la solicitud está vacío {} en el servidor.

Pregunta

¿Por qué el servidor toma un cuerpo de solicitud vacío? ¿y por qué se perdió?

Solicitud de obtención

 async function postData(url = '', data) { console.log('data', data); const response = await fetch(url, { method: 'POST', mode: 'cors', cache: 'no-cache', credentials: 'same-origin', headers: { 'Content-Type': 'application/octet-stream', 'Content-Disposition': 'attachment' }, redirect: 'follow', referrerPolicy: 'no-referrer', body: data }); return response; //.arrayBuffer(); } postData('http://localhost:3600/buffer', arrU8) .then(data => { console.log(data); });

arrU8 es un Uint8Array por longitud: 33411528

API de publicación de Node.js

Express.js se utiliza como biblioteca estándar. Esta API es muy simple y solo quiero devolver el cuerpo de la solicitud como respuesta sin ningún procesamiento en el cuerpo.

 exports.buffer = (req, res) => { console.log(req); res.status(201).send(req.body); };

Respuesta

 {}
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Ha aclarado que está usando Express.js y no está usando ningún middleware.

Tiene que usar middleware para llenar req.body en Express.js. De la documentación :

req.body

Contiene pares clave-valor de datos enviados en el cuerpo de la solicitud. De forma predeterminada, no está undefined y se completa cuando usa un middleware de análisis del cuerpo, como express.json() o express.urlencoded() .

(mi énfasis)

Así que tu código básicamente está haciendo .send(undefined) .

Si no desea utilizar middleware por alguna razón, Express.js Request es una versión aumentada del IncomingMessage incorporado de Node.js, por lo que puede usar esos métodos para leer los datos como (digamos) un Buffer o similar si usted quiere.

about 4 years ago · Juan Pablo Isaza Report

0

Después de inspeccionar el módulo analizador de cuerpo, encuentra que hay estos scripts:

 json.js raw.js text.js urlencoded.js

Es probable que cada uno coincida con tipos MIME específicos. Para application/octet-stream, debe utilizar raw.js. Para hacerlo, al inicializar su aplicación express, debe escribir:

 app.use(require("body-parser").raw());

Esto inicializará el middleware que establece ese atributo req.body, cuando el tipo de contenido es "aplicación/flujo de octetos". Dado que req.body no existe inicialmente en el objeto req, algo debe configurarlo. Ese algo tiende a ser alguna(s) función(es) en el middleware, o si lo sabe, podría hacerlo usted mismo (eso implica mirar los encabezados de solicitud y analizar la secuencia).

Para obtener acceso directo al flujo de bytes de la solicitud (y al inspeccionar el código fuente del módulo), encontrará que se está leyendo un flujo de:

 let stream = zlib.createInflate(); req.pipe(stream);

o

 let stream = zlib.createGunzip(); req.pipe(stream);

Debo decir que yo mismo no entiendo los detalles de la secuencia o el objeto req más allá de esto.

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