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

erd*_*mke 5 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>
Run Code Online (Sandbox Code Playgroud)

编辑:

澄清一下,我的网络应用程序正在返回响应

HTTP 307
Location: http://somesite.company.com/path/to/item
Run Code Online (Sandbox Code Playgroud)

并且 IIS 无益地将其更改为

HTTP 307
Location: http://ServiceName.company.com/path/to/item
Run Code Online (Sandbox Code Playgroud)

小智 7

我的重定向也有同样的问题。

对我有用的是:

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