2013-08-06 67 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 / –