У меня есть сжатый файл.Как отправить его в браузер и заставить его декодировать?
ASP.NET Core поддерживает сжатие следующим образом:
services.AddResponseCompression();
...
app.UseResponseCompresssion
app.Run(async (context) =>
{
var file = System.IO.File.ReadAllText("file.txt");
await context.Response.WriteAsync(file);
});
Но мой файл уже сжат.Я попытался просто установить заголовки, прочитать файл и отправить содержимое, но это не соответствует кодировке.
app.Run(async (context) =>
{
context.Response.Headers.Add("Content-Type", "text/plain");
context.Response.Headers.Add("Content-Encoding", "gzip");
context.Response.Headers.Add("Vary", "Accept-Encoding");
var file = System.IO.File.ReadAllText("compressed.gz");
await context.Response.WriteAsync(file);
});
Если я просто отправляю файл, Firefox и Chrome пытаются загрузить его, но не распаковываютэто.
Подтверждение этого:
$ cat compressed.gz | hexdump | head -1
0000000 8b1f 0808 3768 5bc6 0302 6966 656c 742e
# that's the magic number: 8b 1f 08
$ curl -X GET http://localhost:5000/ -H 'Accept-Encoding: gzip' -H 'Cache-Control: no-cache' --output - | hexdump | head -1
0000000 ef1f bdbf 0808 3768 bfef 5bbd 0302 6966
Как предотвратить проблемы с кодированием?