1

IIS でリバース プロキシを使用してセットアップされたサイトがあります。server1 のメイン サイトは、"folder" への要求を server2 に送信します。これは期待どおりに機能していますが、奇妙な例外が 1 つあります。

server2 のアプリは古いです。.NET Framework 1.1 のコードと、明らかな理由でサポートされなくなった一部のサードパーティ コントロールを使用しています。

IE (任意のバージョン) で server1/folder をブラウズすると、ランダムなことが起こり、かなり定期的に 404 エラーが発生することがあります。Chrome でサイトを閲覧すると、期待どおりに機能します。Chrome User Agent を使用するように IE に指示すると、IE も正常に動作します。

私が考えているのは、コントロールの 1 つがユーザー エージェントを見て、それを使って何かを行っていて、リバース プロキシ経由の最新の IE で失敗していることです。(リバース プロキシの前は IE で動作していました)。私が知る限り、server2 の構成はプロキシに移動する前と同じです。

では、server1 から server2 にリクエストを渡すときに、User Agent を偽造、なりすまし、または操作する方法はありますか?

4

1 に答える 1

1

解決策は簡単でした。

IIS の URL Rewrite 構成で、右側の列にある [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 に答える