微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

问题:强制浏览器下载文件

问题:如何让它在浏览器上呈现?

注意:在.net Web服务中使用相同的HTTP标头:’content-type’,’text / javascript’

所以,其明确的以下声明并不好。
如果您希望Web浏览器呈现HTML,则应将其更改为:

Content-Type: text/html

更新:在下载应用程序/八位字节流期间检查内容类型

但是当我用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作为内容类型,而不是text / javascript

文字/ 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()那里。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐