小编Sea*_*arp的帖子

IIS7:由于 URL 重写和 OutboundRules 使用而导致内容长度不匹配

我在将出站规则配置为在 IIS7 上运行时遇到一些问题,下面的情况让我感到悲伤。我的最终目标是让任何出站规则在几个浏览器中运行。对于此示例,我使用从各种 HTML 标记中剥离 .aspx 的规则。

场景 1(内容长度不匹配):

为了让该特定规则在 IIS7 中发挥作用,我必须默认禁用动态压缩并关闭缓存。我成功地重写了 HTML,但是出现了另一个问题,导致它无法使用。

当尝试使用 outboundrules 重写内容时,我遇到了一个问题,由于标头中的“内容长度不匹配”,Chrome 和 Firefox 正在执行连续加载(感谢 Fiddler 帮助我识别它)。重写有效,但会导致内容长度不正确,因此这两个浏览器看起来像是永远在加载。特别是 Chrome,这会导致一个问题,因为 javascript 似乎被挂起,因此任何 jquery 都无法工作,直到有人实际按下停止按钮。

这是我开始时的 web.config 的相关部分,以便为我提供该场景:

<system.webServer>
  <rewrite>
    <urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <outboundRules>
      <rule name="Remove .aspx from links in the response" preCondition="IsHTML" stopProcessing="false">
        <match filterByTags="A, Area, Base, Form, Frame, IFrame, Link, Img, Script" pattern="(.*)\.aspx(\?.*)?$" />
        <action type="Rewrite" value="{R:1}{R:2}" />
      </rule>
      <preConditions>
        <preCondition name="IsHTML">
          <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
        </preCondition>
      </preConditions>
    </outboundRules>
  </rewrite>
  <caching enabled="false" …
Run Code Online (Sandbox Code Playgroud)

iis-7 caching web-config url-rewriting outbound

5
推荐指数
0
解决办法
1726
查看次数

标签 统计

caching ×1

iis-7 ×1

outbound ×1

url-rewriting ×1

web-config ×1