Node.js res.setHeader('content-type','text / javascript'); 推送响应JavaScript作为文件下载

场景 :考虑下面的代码,将JavaScript作为来自Node.JS服务器的响应。

var http = require('http'); http.createServer(function (req, res) { var JS_Script = 'function Test() { alert("test success")}'; res.setHeader('content-type', 'text/javascript'); res.end(JS_Script); }).listen(8811); 

问题 :它迫使浏览器下载文件。

问题 :我怎样才能让它在浏览器上呈现?

注意 :在具有相同HTTP-header: 'content-type', 'text/javascript' .net Web服务中工作HTTP-header: 'content-type', 'text/javascript'

所以,其明确的以下陈述并不成立。
如果你想要一个Web浏览器来呈现HTML,你应该改变它:

 Content-Type: text/html 

更新 :在下载application/octet-stream期间检查content-type

但是,当我用curl命中一个请求时,输出如下:

 C:\>curl -is http://localhost:8811/ HTTP/1.1 200 OK Content-Type: text/javascript Content-Length: 166 Date: Tue, 09 Apr 2013 10:31:32 GMT Connection: keep-alive function Test() { alert("test success")} 

使用application/javascript作为内容types而不是text/javascript

text/javascript被提到过时。 请参阅参考文档 。

http://www.iana.org/assignments/media-types/application

也看到这个问题上。

更新:

我已经尝试执行你已经给出的代码,下面没有工作。

 res.setHeader('content-type', 'text/javascript'); res.send(JS_Script); 

这是为我工作。

 res.setHeader('content-type', 'text/javascript'); res.end(JS_Script); 

正如robertklep所build议的,请参考节点http docs ,那里没有response.send()

您可以直接设置内容types,如下所示:

 res.writeHead(200, {'Content-Type': 'text/plain'}); 

通过nodejs Docs 链接进行参考。