在调用 res.redirect 之后使用 return 或 next
Using return or next after calling res.redirect
我正在尝试编写将我所有 Http
请求重定向到 Https
的代码,现在我想问一下,我在许多不同的网站上看到了以下代码,但其中一些使用 return
和 res.redirect
,有些用 return
after
res.redirect
,有些什么都不用,有些只用 next()
after
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();
}
});
next()
是 Express 中间件的一部分。它告诉执行功能流程图上的下一个中间件功能。如果不使用,则不会执行下一个中间件。
return
仅用于确保在触发回调后执行停止,即回调的任何部分都不会再次处理,无论您将它与 next
还是 redirect
一起使用它具有相同的用于停止执行该特定功能。
总的来说,我推荐使用:
return res.redirect("https://" + req.headers.host + req.url);
由于在这种情况下您明确地 return 重定向响应。
在大多数情况下,只需 res.redirect()
就足够了,并且您确实有重定向响应 (HTTP 302),但是服务器日志中可能会出现错误,尤其是如果您在 async (req, res) => {}
函数中使用它。
我正在尝试编写将我所有 Http
请求重定向到 Https
的代码,现在我想问一下,我在许多不同的网站上看到了以下代码,但其中一些使用 return
和 res.redirect
,有些用 return
after
res.redirect
,有些什么都不用,有些只用 next()
after
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();
}
});
next()
是 Express 中间件的一部分。它告诉执行功能流程图上的下一个中间件功能。如果不使用,则不会执行下一个中间件。
return
仅用于确保在触发回调后执行停止,即回调的任何部分都不会再次处理,无论您将它与 next
还是 redirect
一起使用它具有相同的用于停止执行该特定功能。
总的来说,我推荐使用:
return res.redirect("https://" + req.headers.host + req.url);
由于在这种情况下您明确地 return 重定向响应。
在大多数情况下,只需 res.redirect()
就足够了,并且您确实有重定向响应 (HTTP 302),但是服务器日志中可能会出现错误,尤其是如果您在 async (req, res) => {}
函数中使用它。