[英]How to enable compression in asp.net Core 2.2 project for https site and avoid problems like CRIME and BREACH
我有一個 web 應用程序,它是使用 ASP.NET Core 2.2 MVC 框架頂部的 C# 編寫的。
我的應用程序在每個請求上顯示大量圖像,這使得加載時間變長並增加了帶寬使用。 為了改善頁面加載和帶寬使用,我想使用Brotli和Gzip格式壓縮 HTTP 響應。
幸運的是,微軟有一個 package ,它使用中間件為我壓縮 HTTP 響應,稱為Microsoft.AspNetCore.ResponseCompression 。 從 package 官方文檔中,默認情況下禁用安全網站的壓縮。
我的問題是如何在避免安全問題的同時壓縮響應?
這是我如何設置Microsoft.AspNetCore.ResponseCompression package
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.Providers.Add<BrotliCompressionProvider>();
options.Providers.Add<GzipCompressionProvider>();
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "image/svg+xml", "image/jpeg" });
options.EnableForHttps = true;
});
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
...
}
上述設置將為以下 MIMI 類型應用壓縮
此外,您還可以在發送之前“壓縮”圖像,例如,使用:
private byte[] CompressImageToQuality(System.Drawing.Image image, int quality)
{
EncoderParameter qualityParam = new EncoderParameter(Encoder.Quality, quality);
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
using (var stream = new System.IO.MemoryStream())
{
image.Save(stream, jpegCodec, encoderParams);
return stream.ToArray();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.