Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

424
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda