防止IIS Url重写模块修改HTTP 303/307响应

时间:2016-09-29 16:32:39

标签: asp.net iis url-rewriting

我在IIS中定义了我想要维护的重写规则。我遇到的问题是,当这个重写背后的应用程序向其自身以外的主机返回HTTP重定向响应(303或307)时,URL重写模块正在更改响应的Location标头上的主机。 (我已确认URL重写是错误的,因为直接访问站点时未观察到此行为)。 IIS正在执行此操作,即使我已定义任何出站规则。如何让IIS重写传入的请求,但是阻止它对传出的响应执行此未配置和无意的处理?

<rule name="ServiceName Rewrite">
  <match url="^(ServiceName/)?(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^ServiceName([.]company[.]com)?$" />
  </conditions>
  <action type="Rewrite" url="http://generic.company.com/ServiceName/{R:2}" />
</rule>

修改

为了澄清,我的网络应用程序正在返回

的回复
HTTP 307
Location: http://somesite.company.com/path/to/item

并且IIS无益于将其更改为

HTTP 307
Location: http://ServiceName.company.com/path/to/item

1 个答案:

答案 0 :(得分:3)

我的重定向也遇到了同样的问题。

对我有用的是:

  1. 在IIS管理器中,转到您的服务器
  2. 输入应用程序请求路由缓存
  3. 在操作中转到服务器代理设置
  4. 禁用复选框“ 在响应标头中反转重写主机
  5. 重新启动服务器