NodeJSだけでページ遷移(リダイレクト)(副題:「res.end();を忘れるな」)

やあみんな。
おじさんは最近NodeJSで遊んだりしているわけだけれども、
あるとき、ま普通にというか当然のように、ページ遷移(リダイレクト)をしたくなった。
がしかし、どうもExpressを使ったやり方しかなかなか見つけられず、いやそうじゃなくて、Expressを使わずして、それでもNodeJSの標準機能だけで実現する方法がどうしても知りたかったんだ。
ずばり、それは以下のようにするとできるようだ。(Chromeのみで確認済み)

server.on('request', function (req, res) {

  if (req.method === 'POST') {

    //POSTデータを受けとる
    req.on('data', function (chunk) { data += chunk })
        .on('end', function () {
          // POSTされたデータの処理
          console.log(data);  // 表示確認してみたり、cookieに何か仕込んでみたり。。
          // でここがページ遷移(リダイレクト)処理
          res.writeHead(301, { Location: "/main.htm" });// ●ここな
          res.end();// ●ここだよ
        });
    }
}

はい、いかがだろうか。
これは、クライアントブラウザ側で、POSTされたデータを何か処理した後に、別のページへ、ページ遷移(リダイレクト)するための処理をイメージした内容だよ。

「●ここな」「●ここだよ」という2行が、今回紹介したい内容だ。
この2行が、このサーバースクリプト内で、動作定義されている、「/main.htm」というURLにページ遷移をしてくれるというわけさ。
ここでおじさんが伝えたかったことは、おじさんは世の解説ページにある、「●ここな」となっている、つまり1行目のみを記述して試したりしていたのだけど、さっぱりページ遷移は起こらずに、あきらめてExpressで作り直すかとしたときに、最後にもう一度だけという感じで、2行目の、res.end();も書くようにしてみたところ、やっと晴れてめでたくページ遷移させることに成功したというわけだった。なので、上記2行を記述することが重要なんですよということが伝えたかった。

なお、上記、「/main.htm」を、「https://nurs.hatenablog.com/」といった、一般的なURLとして指定することも可能だ。ちゃんとしっかりページ遷移(リダイレクト)するぞ。

というかだな、res.end();を忘れるな、だ。
res.end();を忘れてページがいつまでも遷移しなくて悩むのは時間の無駄だ!もったいないよ!
繰り返す。res.end();を忘れるな。
エウロパには近づくな。res.end();だけは、忘れるな。
チャオ!