2013-08-06 39 views
1

我有一个在IIS中使用反向代理设置的网站。 server1上的主站点将请求发送到server2的“文件夹”。这是按预期工作,但有一个奇怪的例外:是否可以使用IIS反向代理指定(伪造)用户代理?

server2上的应用程序已旧。它正在使用.NET Framework 1.1和一些第三方控件,它们出于显而易见的原因不再受支持。

当在IE浏览器(任何版本)中浏览server1 /文件夹时,可能会发生随机事件,并定期收到404错误。在Chrome中浏览网站时,事情与预期一致。如果我告诉IE使用Chrome用户代理,它的行为也是正常的。

我认为正在发生的事情之一是,其中一个控件正在查看用户代理并对其执行某些操作,并且无法通过反向代理使用现代IE。 (在反向代理之前它在IE中工作)。尽我所知,server2上的配置与迁移到代理之前的配置相同。

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

回答

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> 

当我发现你不得不“允许”使用服务器变量时足够简单。

+0

如果您在iis中创建规则,它会为您添加到web.config中。在较新的IIS版本中,它被添加到 - 我认为这意味着旧版本将其添加到

+1

这是我发现的其他资源非常有用:http://sinclairinat0r.com/2014/03/14 /欺骗-ie10s-用户代理功能于IIS换IE11-支持功能于SharePoint的2013 / –