我们有一个重写配置,在这样的配置中将 ARR 视为反向代理:
Browser client (OriginA) <-> IIS/ARR (OriginB) <-> Server
客户端是任意数量的网络浏览器。我们无法更改此配置。
- 客户端请求http://originb/return ,请求中带有一个 URL,例如http://origina/done.html。
- ARR 然后将请求转发到http://server/return。
- 服务器响应
Location
设置为http://origina/done.html和 HTTP 302 的标头。我已经用 Wireshark 验证了这一点。 - 管道中某处的 IIS 将
Location
标头更改为http://originb/done.html。这就是问题开始的地方。 - ARR 在标头的 PATTERN_MATCH 步骤中看到 originb URL
Location
。 - ARR 将 originb URL 报告为
Location
GENERAL_RESPONSE_HEADERS 步骤中的标头。 - 客户端盲目接受 URL 并重定向到不存在的http://originb/done.html而不是http://originb/done.html
我已经启动了失败的请求跟踪,这就是我看到第 5 步和第 6 步的方式。
什么可能导致 IISLocation
在 ARR 之前重写标头?我可以使用其他任何 IIS 工具来解决这个问题吗?
我的 Googlefu 今天让我失望了。
在
Server Proxy Settings
IIS 管理器的窗格中,我需要取消选中“在响应标头中反向重写主机”。