Node.js - 将二进制数据直接从请求流式传输到远程服务器

Node.js - Stream Binary Data Straight from Request to Remote server

我一直在尝试将二进制数据(PDF、图像、其他资源)直接从请求流式传输到远程服务器,但到目前为止还没有成功。明确地说,我不想将文档写入任何文件系统。客户端(浏览器)将向我的节点进程发出请求,该进程随后将向远程服务器发出 GET 请求,并将该数据直接流式传输回客户端。

var request = require('request');

app.get('/message/:id', function(req, res) {

  // db call for specific id, etc.

  var options = {
    url: 'https://example.com/document.pdf',
    encoding: null
  };
  // First try - unsuccessful 
  request(options).pipe(res);

  // Second try - unsuccessful
  request(options, function (err, response, body) {
    var binaryData = body.toString('binary');
    res.header('content-type', 'application/pdf');
    res.send(binaryData);
  });

});

将数据和 binaryData 都放在 console.log 中表明正确的数据在那里,但随后下载的 PDF 已损坏。我不明白为什么。

哇,没关系。发现 Postman(Chrome App)以某种方式劫持了请求和响应。我的代码摘录中的 // First Try 示例在浏览器中正常工作。