1

我有一个使用 IIS 中的反向代理设置的站点。server1 上的主站点向 server2 发送对“文件夹”的请求。这按预期工作,但有一个奇怪的例外:

server2 上的应用程序很旧。它使用来自 .NET Framework 1.1 的代码和一些 3rd 方控件,出于显而易见的原因,这些控件不再受支持。

在 IE(任何版本)中浏览 server1/folder 时,可能会发生随机事情,并经常出现 404 错误。在 Chrome 中浏览网站时,一切正常。如果我告诉 IE 使用 Chrome 用户代理,它也会正常运行。

我认为正在发生的事情是,其中一个控件正在查看用户代理并对其进行处理,而现代 IE 通过反向代理失败。(在反向代理之前它在 IE 中工作)。据我所知,server2 上的配置与迁移到代理之前的配置相同。

那么,在将请求从 server1 传递到 server2 时,有没有办法伪造、欺骗或以其他方式操纵用户代理?

4

1 回答 1

1

解决方案很简单。

在 IIS 中的 URL 重写配置 slick View Server Variables... 在右侧列中。单击添加并输入服务器变量的名称 - 在本例中为 HTTP_USER_AGENT。

这将允许您在路由过程中使用和/或修改这个特定的服务器变量。这是我之前错过或出错的步骤。据我所知,这不能在 web.config 文件中完成。我确定有一个命令行可以做到这一点,但我不知道。

将 HTTP_USER_AGENT 添加到允许的服务器变量列表后,只需通过 IIS 或在 Web.config 文件中将所需的值添加到服务器变量部分进行设置。

<rule name="..." enabled="true" stopProcessing="true">
  <match url="[pattern]" />
  <action type="Rewrite" url="[destination]/{R:1}" />
  <serverVariables>
    <set name="HTTP_USER_AGENT" value="[desired value]" />
  </serverVariables>
</rule>

在我发现您必须“允许”使用服务器变量之后,这很简单。

于 2013-08-06T20:27:33.660 回答