场景:请考虑以下代码,将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'
因此,其明确的以下陈述并不成立 如果您希望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")}
答案 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)