101

私が書こうとしているアプリケーションでは、メイン ページ ( http://localhost:8675 ) は次の形式になっています。

<form action='/?joinnew' method='post'>
  <button>Start</button>
</form>

server.js のコードは次のとおりです。

http.createServer(function(request, response) {
  var root = url.parse(request.url).pathname.split('/')[1];
  if (root == '') {
    var query = url.parse(request.url).search:
    if (query == '?joinnew') {
      var newRoom = getAvaliableRoomId(); // '8dn1u', 'idjh1', '8jm84', etc.
      // redirect the user's web browser to a new url
      // ??? How to do.  Need to redirect to 'http://whateverhostthiswillbe:8675/'+newRoom
...
}}}

ホストアドレスが変更される可能性があるため、ホストアドレスを知る必要がない場合にそれを行う方法があれば幸いです。

'http' オブジェクトは通常の require('http') であり、require('express') ではありません。

4

6 に答える 6

157

To effect a redirect, you send a redirect status (301 for permanent redirect, 302 for a "this currently lives on ..." redirect, and 307 for an intentional temporary redirect):

response.writeHead(301, {
  Location: `http://whateverhostthiswillbe:8675/${newRoom}`
}).end();
于 2012-07-06T03:55:12.050 に答える
113

(OPとは異なり)エクスプレスライブラリを使用している場合:

http.get('*',function(req,res){  
    res.redirect('http://exmple.com'+req.url)
})
于 2012-07-06T03:28:24.623 に答える
35

OP: 「ホストアドレスを知らなくても済む方法があればいいのに…」

response.writeHead(301, {
  Location: "http" + (request.socket.encrypted ? "s" : "") + "://" + 
    request.headers.host + newRoom
});
response.end();
于 2014-05-04T16:16:31.747 に答える