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

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

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