Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

Express中转接口,问题很多,实在没辙了

$
0
0

需求

将前端的所有请求转发到其他网站,并将 response 返回给前端

实现

router.all('/*', function (req, res, next) {
  let jar = request.jar();
  // 以下三步可对不同的 cookie 循环调用
  let cookieStr = 'key=' + req.cookies['key'];
  let cookie = request.cookie(cookieStr);
  jar.setCookie(cookie, config.host + req.url);
  const p = request(config.host + req.url, {
    method: req.method,
    form: _.clone(req.body),
    jar: jar
  });
  req.pipe(p);
  p.pipe(res);
  p.on('error', handleError(next));
});

期间遇到的问题

  • post 请求带有 form 的时候会报错:write after end 解决方法:将req.pipe(p)那一行注释掉,但是却不明白为什么,很难受 详见:https://github.com/request/request/issues/1664
  • 不能传输文件 未解决,将req.pipe(p)会一直 pending,取消注释以后会报 too many parameters
  • 怪象:将 form: _.clone(req.body),注释掉以后,居然会提示 user not login 这个不算 bug 吧,只是感觉奇怪

如何改进这个方法才能完全解决上面所说的问题


不好意思再次麻烦各位大佬,但是实在没辙了 心乱如麻,表达估计不太准确,有兴趣的大佬可以来拍


Viewing all articles
Browse latest Browse all 14821

Trending Articles