2017-11-25 52 views
0

我想写重定向我所有Http请求Https代码后,现在我想问问我看到下面的代码在许多不同的网站,但他们中的一些使用returnres.redirect ,有些使用returnafterres.redirect,有些不使用任何东西,有的只使用next()afterres.redirect使用返回或下一个呼叫res.redirect

我只想问一下return有什么用,或者在这里打电话next()。或者我错过了什么?

app.use(function(req,res,next) { 
    if(req.headers["x-forwarded-proto"] == "http") { 
     console.log('Request was HTTP'); 
     /* return ??*/ res.redirect("https://" + req.headers.host + req.url); 
     // return or next() or nothing ??. 
    } else { 
     console.log('Request was not HTTP'); 
     return next(); 
    } 
}); 
+1

由于您使用'if/else',所以您不需要返回。但是许多开发人员总是使用返回来明确代码已完成并防止其他代码意外运行。由于你的代码在你的条件之后什么也不做,所以return不是_needed_。但是,在完成res.redirect后,你应该永远不要调用'next'。 – Intervalia

回答

2

next()是Express中间件的一部分。它告诉执行功能流程图中的下一个中间件功能。如果没有使用,下一个中间件将不会被执行。

return使用只是为了确保执行触发即没有回调的一部分,你又是否有nextredirect它具有相同的使用,以阻止特定功能的执行用它处理的回调后停止。

+0

怎么样用res.redirect返回? –

+0

同样的事情,待证实它会随着重定向退出函数 – wrangler

+0

答案应该清楚而详尽。这个答案不是那种。 –