IIS 应用程序在响应标头中缺少内容编码 - gzip

2023-11-24

在 Firebug 中,请求标头具有以下条目:
接受编码:gzip、deflate

但没有:
内容编码:gzip
在响应标头中。

无论我尝试过什么,根据SO和其他网站上的许多答案,似乎没有任何效果!静态文件和动态文件都没有被压缩,或者至少如果它们被压缩,则响应标头中没有返回内容编码 - gzip 值。

这是我的 web.config 设置的示例:

<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="150" staticCompressionIgnoreHitFrequency="true">
  <remove name="gzip" />
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="8" dynamicCompressionLevel="8" />
</httpCompression>

我忽略了点击频率
staticCompressionIgnoreHitFrequency="true"

我已经确认 IIS 实际上正在压缩我可以在以下位置看到的文件:
C:\inetpub\temp\IIS 临时压缩文件

如此处指定:在 IIS 8 windows 8 中设置 gzip
我已确保在 Windows 功能 > Internet 信息服务 > WWW 服务 > 性能功能中启用静态和动态压缩

我也尝试过这个人的方法:
IIS 7.5 Compression 创建压缩文件但返回非压缩文件


Edit 1:
IIS版本是10,但我也在IIS 8.5上尝试过这个


Edit 2:
我现在还尝试了在此链接中找到的各种配置文件:https://github.com/h5bp/server-configs-iis/它提供了一些看起来像“最佳实践”的 web.config 文件。
未解决


Edit 3:
根据 @Nkosi 的输入,我创建了一个全新的 Asp.net MVC 应用程序,并使用我尝试过的所有这些选项对其进行配置。 这是我从 Fiddler 获得的原始标头:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/javascript; charset=UTF-8
Expires: Wed, 20 Jul 2016 18:22:47 GMT
Last-Modified: Wed, 20 Jul 2016 18:22:47 GMT
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 20 Jul 2016 18:22:47 GMT

如您所见,没有 Content-Encoding: Gzip
未解决


Edit 4:
我尝试过将代码添加到 Global.asax 部分中的 BeginRequest 事件的方法:https://stackoverflow.com/a/27185575/392591
未解决


Edit 5:
所以我只是尝试根据这个答案启用跟踪:https://stackoverflow.com/a/33182525/392591
没有失败,但我确实注意到跟踪文件的底部有一个名为 GENERAL_RESPONSE_HEADERS 的部分,以下是它提供的内容:

Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: My Little Pony
X-UA-Compatible: IE=Edge,chrome=1

这适用于每个静态类型文件。
但是我刚刚在跟踪文件中发现了以下内容:

8. STATIC_COMPRESSION_START  08:04:03.552 
9. STATIC_COMPRESSION_NOT_SUCCESS Reason="NOT_FREQUENTLY_HIT" 08:04:03.552 
10. STATIC_COMPRESSION_END  08:04:03.552 

压缩未成功,原因是不频繁命中...奇怪,因为我确实将“忽略命中频率”选项设置为 true!

因此,我进入 IIS 管理器,在服务器上将“忽略命中频率”设置为 true(即 applicationHost.config),并将跟踪文件输出更改为以下内容:

8. STATIC_COMPRESSION_START  08:19:17.489 
9. STATIC_COMPRESSION_SUCCESS  08:19:17.489 
10. STATIC_COMPRESSION_END  08:19:17.489 

我返回并在 applicationHost.config 中将其关闭,然后返回静态压缩不成功,所以这肯定会产生影响。但是,当我查看 FireBug 时,它仍然传递未压缩的文件,并且没有 GZIP 内容编码响应标头。

我在失败请求跟踪中注意到的另一个有趣的地方是最后两个整体 GENERAL_FLUSH_RESPONSE_END 和 GENERAL_REQUEST_END 两者都显示我的 Bootstrap.css 文件已发送 17903 字节(大约 18kb),与我在 IIS 临时压缩中看到的文件的压缩版本匹配文件文件夹。因此,该文件在物理上被压缩,并且根据失败的请求跟踪,它正在发送正确的内容...但随后浏览器会获取完整的 117kb 文件?
未解决



我的 IIS 和 gzip 配置也有类似的情况

在 Firebug 中,请求标头具有以下条目:接受编码:gzip、deflate

但没有:内容编码:gzip在响应标头中。

就我而言,问题在于防病毒保护。实际上应用了 gzipping,但是防病毒软件启用设置保护http连接(取决于具体程序),解压缩响应检查它,然后动态重写响应标头。

NOTE:某些代理/防病毒软件更改您的响应标头时的关键属性,即消失时的关键属性Content-Length and Transfer-Encoding增加了价值chunked.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIS 应用程序在响应标头中缺少内容编码 - gzip 的相关文章

  • 扩展授权属性

    我实施了 CustomAuthorization 属性基于 Authorize 属性 我的属性如下所示 public class CustomAuthorizeAttribute AuthorizeAttribute public eUse
  • 如何从 GridView TemplateColumn 单击触发 UpdatePanel?

    我有以下情况 我的所有控件都在页面上的更新面板上 这些控件之一是 GridView 该 GridView 在标题模板字段上包含一个复选框 以进行全部选中 autopostback 是 true 但是当检查更改时 没有任何更改 更新面板会触发
  • 如何通过ConfigurationManager找到配置文件位置?

    如何通过ConfigurationManager找到配置文件位置 我在代码中有 ConfigurationManager 类 并且正在调试它 我想知道它指向哪个配置文件 web config 或 app config 等 Configura
  • 在 ASP.NET MVC 2 中使用 name="array_name[]" 作为表单元素发布数组

    再会 在 PHP 中 可以使用方括号将 name 属性分配给输入元素 如下所示 name my value PHP 会在服务器端自动将其转换为数组 这在 ASP NET MVC 中可能吗 如果没有 是否有其他方法可以在 ASP NET MV
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use
  • nHibernate 使用 Log4Net 进行日志记录,线程会话问题

    大家好 这里有一个小问题 我正在努力解决这个问题 我目前正在开始使用 nHibernate 由于工作需要 我不得不这样做 并且我在 nHibernate 的会话和多线程方面遇到了一些困难 我想在这里完成的任务是让 Log4Net 将所有内容
  • UpdatePanel 破坏 JQuery 脚本

    这是我想做的事情的简化版本 基本上我有一个数据列表 里面有很多东西 当你将鼠标悬停在数据列表中的项目上时 我希望 jquery 隐藏 显示东西 问题是 在我进行数据绑定后 如果 gridview repeater datalist 位于更新
  • 哈希密码如何解密? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在我的网站中使用盐技术的 SHA1 算法对密码进行哈希处理 有什么办法可以解密密码并恢复原来的密码吗 Hashing不加密 解密 当我们
  • 作出选择之后、提交上传之前的 asp.net FileUpload 事件

    我想显示通过 FileUpload 控件的浏览按钮选择的文件的大小 理想情况下 该值在用户选择文件后但在单击 上传文件 按钮之前立即显示 我有一个网络表格 按钮看起来像这样
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 正则表达式仅允许特定数字

    我正在寻找一个只允许输入特定数字的正则表达式 例如2 4 5 6 10 18 我尝试过类似的东西 2 4 5 6 10 18 我输入的任何内容都无法通过正则表达式 然后计算机用手指着我并大笑 我哪里出错了 单引号是不必要的 您正在寻找的正则
  • 为什么不是所有具有 Text 属性的 System.Web.UI.WebControl 类都实现 ITextControl?

    我很好奇为什么只有一些System Web UI WebControl当控件具有与接口相同的属性时 它们会实现某些接口 例如 有很多控件具有 Text 属性 但只有以下实现ITextControl Label Literal 数据绑定文字
  • ASP.NET AJAX 进度条:从代码隐藏更新?

    我在应用程序中具有 Excel 电子表格的导入功能 目前它使用 FileUpload 控件 我上传文件 然后对该文件运行操作 我想通知用户正在完成的操作以及完成的百分比 我认为我可以获取从 Excel 电子表格中提取的总行数 并在将每条记录
  • ASP.net获取硬件信息

    如果我创建一个 ASP net 页面 我是否能够获取当前用户的 CPUID 和 BIOS 序列号 还是出于安全原因不允许这样做 我目前有一个获取这些值的 Visual Basic net 应用程序 我只是想知道是否可以在网页上执行相同的操作
  • Asp.net 开源项目作为 C# 的学习源 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 c 中的开源 asp net 最好是 net 2 0 项目 无论是某种商店 CMS 还是其他任何东西 都没有关系 重要的是项目
  • 在 ASP.NET 5 中创建基于每个请求控制器/操作的格式化程序

    我正在尝试在我的 ASP Rest API 中实现 HATEOAS 更改ReferenceResolverProvider 问题是 根据我使用的控制器 我想使用不同的ReferenceResolvers 因为我需要对每个控制器采取不同的行为
  • ASP.NET 会员电子邮件验证

    尝试基于 C 创建电子邮件验证本文 https web archive org web 20211020153319 https www 4guysfromrolla com articles 062508 1 aspx 我创建了一个 ja
  • Windows 身份验证失败并显示“401 Unauthorized”

    我有一个 MVC 客户端访问受 IDS4 保护的 Web API 它们都在我的本地计算机上运行并由 IIS 托管 使用本地身份进行身份验证时 该应用程序运行良好 但是 当我尝试使用 Windows 身份验证时 开发工具不断收到 401 Un
  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun

随机推荐