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

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

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