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

时间:2013-04-09 10:20:21

标签: node.js

场景:请考虑以下代码,将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浏览器呈现HTML,则应将其更改为:

Content-Type: text/html

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

但是当我用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")}

2 个答案:

答案 0 :(得分:38)

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

提及

text/javascript已过时。请参阅参考docs

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

另请参阅SO上的这个问题。

<强>更新

我已尝试执行您提供的代码,但下面的代码无效。

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

这对我有用。

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

正如robertklep建议的那样,请参考node http docs,那里没有response.send()

答案 1 :(得分:8)

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

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

供参考,请浏览nodejs文档link