¿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.
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 parax-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 aunquegzip
yx-gzip
deberían ser lo mismo según respuestas anteriores en Stack Overflow, no está funcionando de esa manera en este caso en particular.