代码之家  ›  专栏  ›  技术社区  ›  Glenn Slaven

我试图使用GZipStream在页面上强制gzip压缩,但是浏览器说我使用的是不受支持的压缩

  •  2
  • Glenn Slaven  · 技术社区  · 14 年前

    http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/ 关于强制gzip压缩

    void context_PreSendRequestHeaders(object sender, EventArgs e)
    {
        var app = sender as HttpApplication;
    
        var request = app.Request;
        var response = app.Response;
    
        if (CompressionUtils.GzipSupported(request) || CompressionUtils.GzipNotSupportedExplicitly(request)) 
        {
            return;
        }
    
        if (CompressionUtils.GzipSupportedExplicitly(request))
        {
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            response.AddHeader(HttpHeaderKey.ContentEncoding, "gzip");
            return;
        }
    
        response.Write("<iframe style=\"display:none;\" src=\"/CompressedPage.aspx\"></iframe>");
    }
    

    CompressionUtils.GzipSupported 只需检查'接受编码'头,而 CompressionUtils.GzipSupportedExplicitly CompressionUtils.GzipNotSupportedExplicitly 检查cookie是否表明浏览器真的可以读取gzip

    但当我在Firefox中加载一个页面时,会出现以下错误:

    内容编码错误

    无法显示您试图查看的页面,因为它使用了无效或无效的 不支持的压缩形式。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Glenn Slaven    14 年前

    结果发现我绑定得太晚了,绑定到了 PostMapRequestHandler PreSendRequestHeaders . 现在工作很好。