es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la diferencia entre el contenido gzip y x-gzip? En caso afirmativo, ¿cómo puedo descomprimir x-gzip? zlib está fallando.

Tengo una biblioteca, publicada a través de npm como “by-request”, que puede, entre otras cosas, auto-descomprimir 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);
          }
          // *** inicio del nuevo código temporal ***
          else if (contentEncoding === 'x-gzip' && options.autoDecompress) {
            source = zlib.createGunzip(); // zlib.createUnzip() tampoco funciona
            res.pipe(source);
          }
          // *** fin del nuevo código temporal ***
          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.dat

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

La biblioteca zlib está fallando en los datos y devuelve este error:

Error: incorrect header check
at Zlib.zlibOnError [como onerror] (node:zlib:190:17)

¿Hay alguna otra biblioteca de descompresión que necesite? He buscado, pero aún no he encontrado una buena solución. Según esta respuesta anterior de Stack Overflow: https://stackoverflow.com/questions/21870351/difference-between-x-gzip-and-gzip-for-content-encoding

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

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la biblioteca zlib está teniendo problemas al descomprimir los datos desde la URL debido a un error de verificación de encabezado incorrecto. Si bien agregar una verificación para x-gzip en el código es un buen comienzo, parece que no está solucionando el problema. Es posible que se necesite una biblioteca de descompresión diferente, por lo que vale la pena explorar bibliotecas alternativas para ver si pueden manejar los datos desde la URL. También es importante tener en cuenta que aunque gzip y x-gzip deberían ser lo mismo según respuestas anteriores en Stack Overflow, no está funcionando de esa manera en este caso en particular.

Comments are closed.