我编写了一个本质上是代理的快速 Web 应用程序路由 - 它将输入流(zip 文件)的内容通过管道传输到服务器响应的输出流中。
我希望浏览器提示用户下载或任何最适合 zip 文件的内容。 但是,当我在浏览器中加载此路由时,输入流的内容(zip 文件的内容)在浏览器窗口中显示为文本,而不是提示下载。 l
这是发送响应的代码:
res.statusCode = 200;
res.setHeader ('Content-Length', size);
res.setHeader ('Content-Type', 'application/zip');
console.log ("content-type is " + res.header('Content-Type'));
inputStream.pipe (res);
上面的控制台.log语句输出"内容类型是应用程序/zip"。
但是,当我在Chrome的网络选项卡中检查请求时,我看到响应的内容类型是"application/json"。 这意味着 express 或其他东西正在覆盖我的内容类型标头,或者可能已经发送了它。
有谁知道是什么在更改我的内容类型,以及如何确保内容类型是我设置的内容类型?
感谢您的任何帮助。
你应该检查中间件的顺序,这真的很棘手,如果它们的顺序正确,可能会把事情搞砸。您可以在连接网页中查看正确的顺序