使用 res.render 时设置自定义 header
Set custom header when using res.render
我正在使用 express.js 的 res.render 函数,我遇到了一些设置自定义 headers 的问题,我尝试了 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');
});
它有一个包含以下代码的错误日志:Error: Can't set headers after they are sent.
方法二(例子来自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
方法三
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.
我能想到的办法就这么多了,还是解决不了,请问有什么方法可以把自定义的header(尤其是编码类型)设置成res.render吗?
要使用 res.render
设置自定义响应 header,您可以使用 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');
});
有关 res.set()
的更多详细信息,请查看快递 document
如果您想为您的回复设置一个 header,您可以在 http.ServerResponse
object.
上使用 setHeader 方法
var server = require('http').createServer(function(req, res) {
res.setHeader('content-type', 'application/json');
res.write(headerStr);
res.end();
});
我正在使用 express.js 的 res.render 函数,我遇到了一些设置自定义 headers 的问题,我尝试了 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');
});
它有一个包含以下代码的错误日志:Error: Can't set headers after they are sent.
方法二(例子来自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
方法三
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.
我能想到的办法就这么多了,还是解决不了,请问有什么方法可以把自定义的header(尤其是编码类型)设置成res.render吗?
要使用 res.render
设置自定义响应 header,您可以使用 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');
});
有关 res.set()
如果您想为您的回复设置一个 header,您可以在 http.ServerResponse
object.
var server = require('http').createServer(function(req, res) {
res.setHeader('content-type', 'application/json');
res.write(headerStr);
res.end();
});