gpt4 book ai didi

node.js - 代理和重定向有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:45 24 4
gpt4 key购买 nike

我想要服务所有发送到 / 的请求,就像它们发送到 /api/ 一样。例如,

/posts/ 应被视为 /api/posts/

据我所知这是代理,但我不确定代理和重定向之间的区别。主要的困惑来自于这样一个事实:redirect 将响应 header 的状态代码设置为 302,而代理将其设置为 200

代理之间有什么区别,对我来说做我想做的事情的最佳方式是什么?

最佳答案

您可能想要的名称是 rewriting :当特定端点收到请求时,它会被重写为 HTTP 服务器可以处理的内容。

借助 Express,您可以使用自定义中间件函数来实现这一点:

app.use(function(req, res, next) {
// If the current request doesn't start with `/api`...
if (req.url.indexOf('/api') !== 0) {
// ...rewrite it by prefixing it with `/api`.
req.url = '/api' + req.url;
}
next();
});

您必须将其包含在路线之前,因此它会在路线之前被调用。

这对客户端来说是完全透明的:他们认为他们正在获取 /posts 的响应,即使在内部,它是由 /api/posts 处理的处理程序。

如果您希望通过重定向使其明确,您可以使用以下内容:

app.use(function(req, res, next) {
if (req.url.indexOf('/api') !== 0) {
return res.redirect('/api' + req.url);
}
next();
});

这根本不透明。它告诉客户端:“嘿,您尝试请求 /posts,但您需要将请求定向到 /api/posts” 。这意味着客户必须提出额外的请求。

代理基本上是一种复杂的重写方式,但不是仅仅修改请求以使其最终到达正确的处理程序,而是向 /api/posts 发出实际的内部 HTTP 请求,其结果被发送回客户端。在您的情况下,它太过分了(代理通常用于将请求传递到其他 HTTP 服务器)。

关于node.js - 代理和重定向有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37988883/

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