gpt4 book ai didi

javascript - 套接字挂断错误与nodejs

转载 作者:数据小太阳 更新时间:2023-10-29 04:21:55 25 4
gpt4 key购买 nike

我想为一些我不是管理员的 XYZ 服务器设置代理。然后我想对请求和响应 header 进行一些分析,然后对请求和响应主体进行分析。所以我正在使用 http-proxy https://github.com/nodejitsu/node-http-proxy

这就是我正在做的:

  var proxy = httpProxy.createProxyServer();


connect.createServer(
connect.bodyParser(),
require('connect-restreamer')(),
function (req, res) {
proxy.web(req, res, { target : 'XYZserver' });
}
).listen(config.listenPort);

直到 GET 请求,一切都很好,但是每当发出带有 POST、PATCH、PUT 等请求体的请求时,我都会收到错误消息:

Error: socket hang up
at createHangUpError (http.js:1472:15)
at Socket.socketCloseListener (http.js:1522:23)
at Socket.EventEmitter.emit (events.js:95:17)
at TCP.close (net.js:466:12)

我在谷歌上搜索了很多,但没有发现到底出了什么问题。我使用“proxy.web”的“ws:true”选项启用套接字代理,但仍然出现相同的错误。

最佳答案

我有一个类似的问题并通过将我的代理代码移动到其他 Node 中间件之上来解决它。

例如这:

var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
app.use("/someroute", function(req, res) {
apiProxy.web(req, res, { target: 'http://someurl.com'})
});

app.use(someMiddleware);

不是这个:

app.use(someMiddleware);

var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer();
app.use("/someroute", function(req, res) {
proxy.web(req, res, { target: 'http://someurl.com'})
});

我的具体问题是在代理之上使用 BodyParser 中间件。我没有做太多挖掘,但它一定以某种方式修改了请求,从而在请求最终到达时破坏了代理库。

关于javascript - 套接字挂断错误与nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25207333/

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