4

我编写了一个本质上是代理的快速 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); 

上面的 console.log 语句输出“content-type is application/zip”。

但是,当我在 Chrome 的网络选项卡中检查请求时,我看到响应的内容类型是“application/json”。这意味着 express 或其他东西正在覆盖我的内容类型标头,或者可能已经发送了它。

有谁知道是什么改变了我的内容类型,以及我如何确保内容类型是我设置的?

谢谢你的帮助。

4

1 回答 1

0

您应该检查中间件的顺序,这真的很棘手,如果它们的顺序正确,可能会搞砸。您可以在Connect 网页中查看正确的顺序

于 2013-02-04T14:43:09.260 回答