リクエストされたURLを書き換える

28 2月


ソフトウェアのデモをやるときに,クライアントだけでなくサーバーも必要で,そのため仮想のサーバーを持って行くときもあります。よく,ノートブックの Windows 上で VirtualBox を使って仮想サーバーを起動しデモをやります。Windows も サーバーもプライベートの IP アドレスを割り振ります。この場合上にある写真のようにハブと接続しないとお互いの通信ができません。ハブの先はどこにも繋がっていなくて,外との通信は遮断し孤立した状態でデモをするのですが,どうしても外との通信が必要な場合があって,それは MathJax の利用です。これも仮想サーバーに用意はしているのですが,ただリクエストの URL を変更することが難しい。データーベースの中の情報を編集する必要があるからです。 データベースに記入された教材に関する情報の中に MathJax の URL が記入されていて,教材を開くとどうしても外へ通信をしようとします。発表用に特別に教材を用意すると色々つじつまを合わせることが必要となるので,なるべく実際に使用した教材とデータそのままでデモをやりたい。そこで,外への通信を別のサイトに(仮想サーバーに)誘導できないかと思って調べました。参考にしたサイトは下記です。

利用したソフトは Fiddler というものですが,下図が Fiddler が動いているところです。ホストの Windows にインストールしました。通信の解析をするためのソフトです。

参考サイトの記述にしたがって,メニューから [Rules] – [Customize Rules] を選んで,設定を編集します。エディターが起動するのですがこんな感じです。左側に書き込みます。

上の図は既に編集した後です。下記のような文を static function OnBeforeRequest に追加しました。

        if ( oSession.HostnameIs( "kanaike.susi.oita-u.ac.jp" ) ) {
            oSession.hostname = "192.168.100.189";
        }

hostname となっているのですが,IP アドレスを記述しても大丈夫でした。これで Windows ホスト上から kanaike.susi.oita-u.ac.jp へのリクエストは仮想サーバーのアドレス 192.168.100.189 に行くようになりました。