26

场景:考虑以下代码以提供 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 Web 服务 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")}
4

2 回答 2

40

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

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

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 所建议的,请参考节点 http docs,那里没有response.send()

于 2013-04-09T10:46:08.747 回答
8

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

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

参考通过 nodejs 文档链接

于 2016-05-05T09:54:16.383 回答