为什么express-js不设置Content-Type标头?

Kit*_*nde 26 javascript offline-caching http-headers node.js express

我有以下内容:

var express = require('express'),
    app = express.createServer();

app.get("/offline.manifest", function(req, res){
  res.contentType("text/cache-manifest");
  res.end("CACHE MANIFEST");
});

app.listen(8561);
Run Code Online (Sandbox Code Playgroud)

Chrome中的网络标签显示它是text/plain.为什么不设置标题?

上面的代码有效,我的问题是由链接到旧版本的express-js引起的

Ray*_*lha 40

res.type('json') 现在也有效,正如其他人所说,你可以简单地使用
res.json({your: 'object'})

  • 这很好,因为它仍然允许你使用`res.send(obj)`将对象作为JSON发送.比`res.end(JSON.stringify(obj))更好 (2认同)

sch*_*rmu 20

试试这段代码:

var express = require('express'),
    app = express.createServer();

app.get("/offline.manifest", function(req, res){
  res.header("Content-Type", "text/cache-manifest");
  res.end("CACHE MANIFEST");
});

app.listen(8561);
Run Code Online (Sandbox Code Playgroud)

(我假设您使用的是Express的最新版本,2.0.0)

更新: 我刚刚使用Firefox 3.6.x和Live HTTP Headers进行了快速测试.这是插件输出:

 HTTP/1.1 200 OK
 X-Powered-By: Express
 Content-Type: text/cache-manifest
 Connection: keep-alive
 Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)

确保在尝试之前清除缓存.