Nodejs返回下载文件而非HTML响应

4

以下是我的代码:

var express = require('express'),
      app = express.createServer(express.logger());
app.use(express.bodyParser());
app.get('/', function(request, response) {
    var name = request.param('name', null);
    response.header('Content-Type', 'text/event-stream');
    var t = setInterval(function(){
        response.write('Hello World by '+name+' (using http-1.1 streaming data!)<br />');
    }, 2000);
    /*request.socket.on('close', function() {
        clearInterval(t);
    }); */
});

var port = process.env.PORT || 5000;
app.listen(port, function() {
    //clearInterval(t);

  console.log("Listening on " + port);
});

我使用 Express 是因为我在 Heroku 上测试并按照指南操作。

所以当我打开应用程序时,会弹出一个下载对话框,里面是文件中的数据(已下载),而不是 HTML(DOM)响应。

我做错了什么?(是浏览器问题吗?)

编辑:
@Joe 解决了我的初步问题,但我还有两个问题:
1)为什么我不需要插入“正确”的内容类型?(流式传输?)
2)为什么这段代码只有等待很长时间(大约半分钟)后才输出?


1
这可能有助于解释text/event-stream的作用http://dsheiko.com/weblog/html5-and-server-sent-events/ - Joe
1个回答

4
如果您想将其显示为HTML,则需要将Content-Type设置为text/html

但是我该如何在每个时间间隔内流式传输数据呢? - funerr
它可以工作,但加载时间很长(大约22秒)甚至在显示任何东西之前,为什么? - funerr
第一次需要22秒,然后每次似乎都很快?这可能是在启动时使用了某些开发设置。我不太了解NodeJS。 - Joe
嗨@funerr,我还需要设置response.header('Accept', 'text/html'),除了response.header('Content-Type', 'text/html')。 - mdiehl13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接