3

わかりました。2 つのエクスプレス サーバーを備えた node.js アプリがあります。1 つはポート 80 (HTTP) でリッスンし、もう 1 つはポート 443 (HTTPS) でリッスンします。

現在、これらはすべて同じルートを持っているわけではありません。まったく逆に、ほとんどのものは HTTPS 経由で提供され、一部は HTTP 経由で提供されます。ただし、重複する部分があります。

だから、ルートを2回書く必要がないように、ルートをsecureAppとAppの両方に「バインド」する方法があるのではないかと思っていますか?

元。現在、同じルートのセットが 2 つあります (1 つは HTTP 用、もう 1 つは HTTPS 用)。

app.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

secureApp.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

私はこのようなことをしたいと思います:

model.get('/tweet-stats.json', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send(publicTweetStatus());
});

app.handle.bind(model);
secureApp.handle.bind(model);

これは可能ですか?すべてのポートでこの特定のルートの 1 つのインスタンスのみを管理する、はるかに優れたコーディングを行います。

4

1 に答える 1

7

なぜあなたは自分自身を繰り返すのですか?使用できないルートをブロックするだけです

function secureOnly(req, res, next) {
  if (!req.secure) {
    res.send(426, 'sorry')
  else {
    next()
  }
}

2つのポートでリッスンします

http.createServer(app).listen(80)
https.createServer(app).listen(443)
于 2013-05-10T03:23:44.927 に答える