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

标签 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.send(JS_Script);
}).listen(8811);

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

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

注意:在 .net 网络服务中使用相同的 HTTP-header: 'content-type', 'text/javascript'

因此,其明确的以下陈述并不成立。
如果您希望 Web 浏览器呈现 HTML,则应将其更改为:

Content-Type: text/html

更新:在下载过程中检查 content-type 它的 application/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")}

最佳答案

使用 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()

关于Node.js res.setHeader ('content-type' , 'text/javascript' );将响应 javascript 作为文件下载推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899357/

相关文章:

node.js - Node-webkit 浏览器插件

node.js - 开 Jest mock express ?

javascript - 为什么 Promise.all 中的 promise 仍然未决?

node.js - 如何使用 Joi 验证字符串?

javascript - 从 Node.Js 和 Express.Js 中的导入函数返回响应

javascript - 401 状态处理,带访问和刷新 Token React, Node

node.js - Sequelize object.add 不返回 id?

javascript - node.js 中的子/辅助线程

javascript - 如何创建 Grunt Multitask 来处理我的模板

node.js - 哪种方法更好?从客户端还是从服务器端上传文件?