我正在尝试使用http-proxy-middleware
在Express中调试代理,但是无论我做什么,我都将获得绝对零响应。端点发送响应,但是代理永远不会返回该响应,并且onProxyRes
事件也不会触发。此外,可以通过curl
,Insomnia,fetch
API和request-promise
直接访问端点,并且该端点已被用作我们客户的API。
即使设置很简单:
app.use('/api', proxy({
target: 'https://my.secret.endpoint',
changeOrigin: true
});
我得到的响应绝对为零,除了超时后的ECONNRESET
。有什么建议吗?
答案 0 :(得分:0)
Heureka!我找到了想要的答案!冒犯的一方是express.urlencoded()
中间件(在我的情况下),该中间件确实有些技巧,最终弄乱了代理。这可以通过在代理之后应用有问题的中间件来解决。可能执行此操作的其他中间件包括cookie-parser
和bodyParser
(均已弃用)。
有关此问题的更多信息:https://github.com/chimurai/http-proxy-middleware/issues/40
答案 1 :(得分:0)
ViggoV
当目标为https时,您需要禁用SSL。
就像这样:
app.use('/api', proxy({
target: 'https://my.secret.endpoint',
changeOrigin: true,
secure: false
});
答案 2 :(得分:0)
另一个遇到同样问题但仍未解决的人的解决方案。
在代理配置中,请确保您匹配任何路径 不仅带有双** *
const proxy = require("http-proxy-middleware");
module.exports = function(app) {
app.use(proxy("/api/**", { // https://github.com/chimurai/http-proxy-middleware
target: "http://localhost:5000",
secure: false
}));
};
有关更多信息,请检查此reference