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

And*_*hoe 5 render node.js express

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

这是我的代码

方法一

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');
});
Run Code Online (Sandbox Code Playgroud)

它有一个带有以下代码的错误日志: Error: Can't set headers after they are sent.


方法 2(来自此处的示例)

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');
});
Run Code Online (Sandbox Code Playgroud)

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


方法三

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

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


这就是我能想到和找到但仍然无法解决的所有方法,有什么方法可以使用 res.render 设置自定义标头(尤其是编码类型)?

sha*_*ncs 7

要使用 设置自定义响应标头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');
});
Run Code Online (Sandbox Code Playgroud)

请查看快递文件以获取更多详细信息res.set()