Mi aplicación incluye algunos activos de brotli-compresset y quiero descomprimirlos de alguna manera usando el navegador en lugar de enviar una biblioteca de descompresión. La mejor manera que se me ocurrió para engañar al navegador para que lo haga es simular una respuesta comprimida, que, desafortunadamente, no funciona:
// Here's a brotli-compressed JSON const compressedBytes = new Uint8Array([161,232,7,128,225,60,176,219,56,82,174,50,55,131,242,211,168,22,217,235,218,154,50,66,77,182,205,166,93,90,37,27,71,177,131,132,178,39,139,111,22,157,174,62,78,57,215,150,98,130,73,70,223,18,63,30,0,14,14,57,104,135,68,162,247,46,194,120,39,9,132,46,144,108,191,147,200,106,67,47,244,253,195,243,78,156,106,123,173,29,132,142,15,209,17,230,72,114,152,70,211,188,205,84,49,205,172,101,245,67,59,130,0,116,246,124,222,250,15]); const headers = new Headers(); headers.append( 'Content-Encoding', 'br' ); headers.append( 'Content-Type', 'application/json' ); const r = new Response( compressedBytes.buffer, { status: 200, statusText: 'OK', headers } ); await r.arrayBuffer(); // Unfortunately just outputs a provided buffer w/o decompressing it Intenté poner una solicitud en caché, clonarla, pero nada parece funcionar. ¿Quizás alguien sabe una forma de lograr la descompresión nativa? La API de DecompressionStream es de alguna manera relevante, pero no es compatible con brotli y tiene problemas de compatibilidad.
De acuerdo con este problema , parece que el decodificador brotli incluido en los navegadores no está expuesto a JS y que la forma preferida para decodificar brotli es usar una biblioteca (como brotli.js )
La API DecompressionStream en su versión actual no es relevante porque:
Los formatos de compresión que no sean "gzip" y "deflate" no serán compatibles con la primera versión de la API.
Se ha abierto un problema para admitir brotli , pero supongo que tendrás que esperar un poco más ^^