28

我有以下内容:

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

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

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

4

3 回答 3

46

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

于 2016-10-23T20:43:50.750 回答
24

试试这个代码:

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

(我假设您使用的是最新版本的 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

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

于 2011-03-23T07:05:42.643 回答
2

代替res.send()

使用res.json()它自动将内容类型设置为application/json

于 2018-02-05T09:53:15.477 回答