我之前在这里遇到过一个问题,但我没有'知道为什么它会发生在我的应用程序中#34;我发现"无法在发送后设置标题"每当我去路线/
时都会出错。我确定我遗漏了一些基本的东西。我查看了文档,我在这里查看了其他答案,但我似乎仍然无法理解为什么会这样。有人可以介绍一下这个错误发生的原因吗?
当我将writeHead更改为setHeader时,一切都相应。除了/
以外,我还会在哪里发送标题?
// Basic Setup
var express = require('express')
, app = express()
, bodyParser = require('body-parser')
, port = process.env.PORT || 3000;
// Middleware
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
// Setup Routes
var router = express.Router();
router.get('/about', function(req, res){
res.json({name: "tester"});
});
router.get('/', function(req, res){
res.writeHead('200', {"Content-Type": 'text/html'});
res.send("<html><head></head><body>Welcome to something. Sent from server.</body> </html>");
});
app.use('/', router);
app.listen(port);
console.log("listening on port " + port);`
答案 0 :(得分:0)
您可以根据需要随时拨打res.setHeader(name, value)
,直到您拨打res.writeHead(statusCode)
。在writeHead
之后,标题会被烘焙,您只能调用res.write(data)
,最后调用res.end(data)
。
试试这个:
Any exceptions within middleware function(req, res, next) (Connect/Express only)
res.send(body|status[, headers|status[, status]]) (Express only)
答案 1 :(得分:0)
<强> SetHeader可以强>:
为隐式标头设置单个标头值。如果此标头已存在于待发送标头中,则其值将被替换。如果您需要发送多个具有相同名称的标头,请在此处使用字符串数组。
在这里给出:
http://nodejs.org/docs/v0.4.0/api/http.html#response.setHeader
WriteHead :
向请求发送响应标头。状态代码是一个3位HTTP状态代码,如404.最后一个参数headers是响应头。可选地,可以将人类可读的reasonPhrase作为第二个参数。
此方法只能在消息上调用一次,并且必须在调用response.end()之前调用它。
如果在调用之前调用response.write()或response.end(),则会计算隐式/可变标题并为您调用此函数。
在这里给出:
http://nodejs.org/docs/v0.4.0/api/http.html#response.writeHead