一尘不染

将请求发布到Node-http-proxy Node.js时发生套接字挂断

node.js

我正在Node.js项目中工作,我希望node充当solr的代理

对于代理:我使用了Node-http-proxy。问题是代理在获取请求的情况下表现出色,但在发布请求的情况下,导致套接字挂起异常

这是我的节点代码的示例

var express = require('express');
var router = express.Router();

var http = require('http');
var httpProxy = require('http-proxy')

var proxyOptions = {
  host: "127.0.0.1",
  port: 8983
};
var proxy = httpProxy.createProxyServer(proxyOptions);

// It works excellent in GET request
router.get('/solr/*', function(req, res) {
  proxy.web(req, res, {
    target: 'http://' + proxyOptions.host + ':' + proxyOptions.port
  });
})

// the socket hang up in post request
router.post('/solr/*', function(req, res) {
  console.log('Post Request');
  proxy.web(req, res, {
    target: 'http://' + proxyOptions.host + ':' + proxyOptions.port
  });
})

这是一段时间后在节点控制台中的错误

Error: socket hang up
    at createHangUpError (http.js:1476:15)
    at Socket.socketOnEnd [as onend] (http.js:1572:23)
    at Socket.g (events.js:180:16)
    at Socket.emit (events.js:117:20)
    at _stream_readable.js:943:16
    at process._tickCallback (node.js:419:13)

关于问题原因的任何建议


阅读 232

收藏
2020-07-07

共1个答案

一尘不染

我认为问题出在中间件的顺序上。在httpProxy之前使用bodyParser会破坏带有JSON正文的请求,因此应该在bodyParser之前使用httpProxy。

您可能需要检查一下以获取有关bodyParser的更多信息。

2020-07-07