gpt4 book ai didi

javascript - "end"来自 express/connect 中间件的请求的正确方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:01:19 26 4
gpt4 key购买 nike

假设我有这样的中间件;

var express = require('express');
var app = express();

app.use(function (req, res, next) {
var host = "example.com";

if (req.host !== host) {
res.redirect(301, host + req.originalUrl);
res.end();
}
});

在这里我需要遵守什么样的规则?

  1. 我应该调用 res.end() 吗? (或者 res.redirect() 会为我这样做吗?)
  2. 我应该调用 next() 吗? (或者 connect 是否检测到请求已经结束并干净退出?)
  3. 假设我应该调用next(),我猜这意味着可能会接收到我的中间件的请求,这些请求可能有已经被链中更高的其他中间件终止;我该如何保护自己免受这种伤害?

最佳答案

  1. res.redirect() 确实调用了 res.end() 本身;
  2. 如果你的中间件不是终点,你应该调用 next();在生成重定向的情况下,它一个端点并且next()不应该被调用,但是如果req.host === host,您需要调用 next() 将请求沿链向上移动到其他中间件/路由;
  3. 请求不会结束,响应会结束。当它发生时,它将结束中间件链,因此您不必担心。

关于javascript - "end"来自 express/connect 中间件的请求的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15571779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com