【问题标题】:Is is possible to specify (fake) a User Agent using IIS Reverse Proxy?是否可以使用 IIS 反向代理指定(伪造)用户代理?
【发布时间】:2013-08-07 04:27:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: .net iis user-agent reverse-proxy


    【解决方案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>
    

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

    【讨论】:

    • 如果您在 iis 中创建规则,它会为您添加到 web.config。在较新的 IIS 版本中,它被添加到 - 我认为这意味着旧版本将它添加到
    • 这是我发现非常有用的另一个资源:sinclairinat0r.com/2014/03/14/…
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多