使用NodeJS构建转发代理,但无法拦截响应流以进行修改

时间:2018-07-05 04:41:36

标签: node.js proxy

我需要将来自客户端(转发代理)的请求代理到服务器。但是在将其转发到客户端(客户端是我在移动设备,Android或iOS上的应用程序)之前,我必须在服务器的传入响应中修改一些JSON键值对。该应用程序的行为将根据修改后的响应进行更改。

我已经使用Node中的httprequest库实现了单行代理服务。但是我无法访问该响应以对其进行修改。

const http = require('http');
const request = require('request');

const PROXY_PORT = 9000;
const proxy = http.createServer((req, res) => {
  req.pipe(request(req.url)).pipe(res);
}

proxy.listen(PROXY_PORT);

现在代替:

req.pipe(request(req.url)).pipe(res);

如果我使用:

var myReq = req.pipe(requests(req.url));
console.log(myReq.body);
myReq.pipe(res);

打印正文会返回undefined,但响应已成功发送到客户端。

  1. 为什么body属性返回undefined?回复尚未完成吗?
  2. 如何访问目标服务器发送的响应对象?
  3. 一旦我修改了响应,是否需要将头文件和主体再次组装到另一个响应对象中,然后将其转发给客户端?我的意思是,原始响应对象是不可变的吗?

0 个答案:

没有答案