请求 headers 的响应 Header 和 accept-encoding 中缺少 content-encoding:gzip、deflate、br(以该精确顺序)用于 HTTPS 请求

Missing content-encoding in Response Header for Request headers with accept-encoding: gzip, deflate, br (in that precise order) for HTTPS Requests

我们正在使用 IBM Portal(8.0 版。0.xx??)。我们有 2 个 IBM 门户服务器位于 2 个 Apache http 服务器后面。 在我们的一个 portlet 中,我们有一个包含以下资源的 jsp 文件:

<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/include/css/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/include/css/jquery-ui.structure.min.css">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/include/css/jquery-ui.theme.min.css">
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/include/css/include.css">
<script type="text/javascript" src="<%=request.getContextPath()%>/include/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/include/js/jquery-ui.min.js"></script>

当使用最新版本的 Chrome 和 FF 时,在所有情况下,https 请求 header 具有以下令牌:Accept-Encoding:gzip, deflate, br

当 https 响应从服务器返回时,以下资源 不会在响应中返回带有 content-encoding 标记的资源 header(即content-encoding:gzip

因此响应 body 然后显示压缩内容,因为浏览器或接收实体假定资源未被压缩,因此不应用任何解压缩。结果内容当然会呈现为乱码文本。这是由于缺少 content-encoding: gzip 响应 header 令牌。

奇怪的是,其他资源:

所有 http 请求 return 返回正常,只有 https 请求对某些资源失败。

我所做的诊断:

@covener 怀疑的问题是缓存中毒。 httpd.conf 文件中的所有 portlet/applications 都有一个 CacheDisable 指令,除了显示错误的特定 portlet。在包含该 portlet 并重新启动 apache 之后,所有资源都返回了正确的 content-encoding 响应 header,随后解压正常。 感谢大家的帮助。