我是node.js的新手。我需要将一个POST请求(带有效负载)从node.js代理到另一个服务器,并将其响应处理回浏览器客户端。
我的方案(浏览器< - > node.js< - >最终目标服务器)。
app.post('^*$', function(req, res) {
delete req.headers.host; // i read somewhere to delete the old host
req.headers.host = 'ipadress:port';
request({ url: 'http://ipaddress:port' + req.path, headers: req.headers, body: req.body }, function(err, remoteResponse, remoteBody) {
if (err) { return res.status(500).end('Error no response'); }
res.writeHead(200,{
'Content-Length': remoteBody.length,
'Content-Type': 'text/xml' }); // copy all headers from Response
res.end(remoteBody);
});
});
我继续收到“500内部服务器错误”“错误无响应”。
我强烈怀疑(虽然不确定!),这个错误的原因是我的初始请求的有效负载没有被复制到代理请求和我的最终服务器所期望的完整URL不存在。
有人可以告诉我,我如何将网址和有效负载复制到转发请求中? 另外,我如何处理来自转发服务器的响应? 我的有效负载是一个xml对象,最终的URL是
http://ipaddress:port/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_WSAPPS_Q&receiverParty=&receiverService=&interface=SI_OrderStatusRequest_Out&interfaceNamespace=http://xyz/IF027/EC/OrderStatus/I_WS_APPS
@Krzysztof Sztompka。
以下是您要求我提供的信息。 miine是一个开发环境。
_http_outgoing.js:512 抛出新的TypeError('第一个参数必须是字符串或缓冲区'); ^ TypeError:第一个参数必须是字符串或Buffer 在ServerResponse.OutgoingMessage.end(_http_outgoing.js:512:11) 在Request._callback(D:\ MyNode.js \ serverproxy.js:18:43) 在self.callback(D:\ MyNode.js \ node_modules \ request \ request.js:198:22) 在Request.emit(events.js:107:17) 在Request.onRequestError(D:\ MyNode.js \ node_modules \ request \ request.js:867:8) 在ClientRequest.emit(events.js:107:17) 在Socket.socketOnEnd(_http_client.js:300:9) 在Socket.emit(events.js:129:20) at _stream_readable.js:908:16 at process._tickCallback(node.js:355:11)