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

590
Views
¿Diferencia entre contenido gzip y x-gzip? Si es así, ¿cómo descomprimo x-gzip? zlib se está ahogando

Tengo una biblioteca, publicada a través de npm como "por solicitud", que puede, entre otras cosas, descomprimir automáticamente el contenido web. Parte del código para manejar esta situación se ve así:

 if (!options.dontDecompress || !binary) { if (contentEncoding === 'gzip' || (options.autoDecompress && /\b(gzip|gzipped|gunzip)\b/.test(contentType))) { source = zlib.createGunzip(); res.pipe(source); } // *** start of temporary new code *** else if (contentEncoding === 'x-gzip' && options.autoDecompress) { source = zlib.createGunzip(); // zlib.createUnzip() doesn't work either res.pipe(source); } // *** end of temporary new code *** else if (contentEncoding === 'deflate' || (options.autoDecompress && /\bdeflate\b/.test(contentType))) { source = zlib.createInflate(); res.pipe(source); } else if (contentEncoding === 'br') { source = zlib.createBrotliDecompress(); res.pipe(source); } else if (contentEncoding && contentEncoding !== 'identity') { reject(UNSUPPORTED_MEDIA_TYPE); return; } }

El código había estado funcionando bastante bien hasta que intenté leer un archivo de información astronómica desde aquí: https://cdsarc.cds.unistra.fr/viz-bin/nph-Cat/txt.gz?VII/118/names. eso

Estaba presionando el controlador de error de reject(UNSUPPORTED_MEDIA_TYPE) porque no había manejado específicamente el Content-Type de x-gzip . Sin embargo, simplemente agregar un cheque para x-gzip no solucionó el problema.

zlib se está ahogando con los datos y regresa con este error:

Error: verificación de encabezado incorrecta
en Zlib.zlibOnError [como onerror] (node:zlib:190:17)

¿Hay una biblioteca de descompresión diferente que necesito? He buscado, pero aún no he encontrado una buena solución. De acuerdo con esta respuesta anterior de desbordamiento de pila: diferencia entre "x-gzip" y "gzip" para la codificación de contenido

...gzip y x-gzip deberían ser iguales. No está funcionando de esa manera. Por otro lado, ningún navegador web que he probado tiene ningún problema para obtener y mostrar el texto de la URL cdsarc.cds.unistra.fr.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La siguiente solución funciona para mí, sustituyendo una operación de descompresión gzip de shell por la proporcionada por zlib y createGunzip() . La única razón que se me ocurre para que esta corrección funcione es que hay algo un poco extraño en el flujo de datos comprimidos proporcionado por el sitio web en particular que estaba causando la falla, algo para lo que el comando de shell es tolerante, pero zlib no lo es. .

 if (!checkedGzipShell) { checkedGzipShell = true; hasGzipShell = true; const gzipProc = spawn('gzip', ['-L']); await new Promise<void>(resolve => { gzipProc.once('error', () => { hasGzipShell = false; resolve(); }); gzipProc.stdout.once('end', resolve); }); }
 if (contentEncoding === 'gzip' || contentEncoding === 'x-gzip' || (options.autoDecompress && /\b(gzip|gzipped|gunzip)\b/.test(contentType))) { if (hasGzipShell) { const gzipProc = spawn('gzip', ['-dc']); source = gzipProc.stdout; res.pipe(gzipProc.stdin); } else { source = zlib.createGunzip(); res.pipe(source); } }
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!