我正在尝试将GZIP编码添加到来自Web应用程序(.NET Core 2.1)的响应中
我正在关注guide
据此,我在Startup.cs中添加了以下几行
public void ConfigureServices(IServiceCollection services)
{
services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>();
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
app.UseStaticFiles();
app.UseSpaStaticFiles();
// Other middleware
}
我正在使用.NET Core 2.1随附的默认WebApplication模板(使用React)在全新的WebApplication上执行此操作。
但是,当我尝试查询应用程序上的控制器操作时,则不会应用任何编码。
请求标头包含 Accept-Encoding:gzip,deflate,br 标头,因此我认为请求不是问题。
现在这是奇怪的部分。一旦我添加app.UseResponseCompression();
行两次,我突然开始受到一些压缩。
在将app.UseResponseCompression();
复制两次之后,标题如下所示:
如您所见,gzip标头存在两次。 (响应的大小也相当小,因此gzip压缩似乎可以正常工作)
任何人都可以解释发生了什么以及为什么发生这种情况。以这种方式设置项目的主要问题是,在稍后的管道中,我无法解压缩请求,并且我想这是由于此处发生的某些魔术所致。
This是一个重现该问题的示例Web应用程序。 (运行应用程序,打开localhost:5015并导航到“获取数据”。-观察浏览器Web控制台中发生的情况)
答案 0 :(得分:0)
有两个实例
Content-Encoding: gzip
暗示它已被压缩两次,因此您需要解压缩两次才能达到预期的效果。