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

423
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
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