使用res.render时设置自定义标题

时间:2017-08-26 13:35:13

标签: node.js express render

我使用了express.js的res.render功能,我遇到了一些设置自定义标题的问题,我尝试了4种方法,但都失败了

这是我的代码

方法1

app.get('/login', function(req, res, next) {
  res.writeHead(200, {'Content-Type':'text/plain; charset=utf-8'});
  next()
});

app.get('/login', function(req, res) {
  res.locals.text="hello";  
  res.render('index');
});

它的错误日志包含以下代码:Error: Can't set headers after they are sent.

方法2(来自here的例子)

app.get('/login', function(req, res, next) {
  res.header(200, {'Content-Type':'text/plain; charset=utf-8'});
  next()
});

app.get('/login', function(req, res) {
  res.locals.text="hello";
  res.render('index');
});

代码附带错误:TypeError: field.toLowerCase is not a function

方法3

app.get('/login', function(req, res) {
  res.writeHead(200, {'Content-Type': 'application/xhtml+xml; charset=utf-8'});
  res.locals.text="hello";
  res.render('index');
});

代码也有错误:Error: Can't set headers after they are sent.

我能想到并找到但仍无法解决的所有方法,有没有办法用res.render设置自定义标头(特别是编码类型)?

2 个答案:

答案 0 :(得分:4)

要使用res.render设置自定义响应标头,您可以使用res.set()。这是一个示例代码:

app.get('/login', function(req, res) {
  res.set({'Content-Type': 'application/xhtml+xml; charset=utf-8'});
  res.locals.text="hello";
  res.render('index');
});

请查看快递document,了解有关res.set()

的更多详情

答案 1 :(得分:0)

如果要为响应设置标题,可以在http.ServerResponse对象上使用setHeader方法。

var server = require('http').createServer(function(req, res) {      
    res.setHeader('content-type', 'application/json');      
    res.write(headerStr);
    res.end();
});