在响应已经完成后尝试设置标头时会发生此错误已发送给客户。在 Node.js 和 Express 中,关于响应方法的调用顺序有一定的规则:
Head State: 在调用 res.writeHead() 之前,只有 res.setHeader () 和类似的函数可以用来设置 headers。
Body State: 在 res.writeHead() 之后调用后,无法再修改标头。只有 res.write() 和 res.end() 可以用于将数据写入响应正文。
在提供的代码中,发生错误是因为在发送响应标头后尝试重定向通过 res.writeHead()。具体来说,以下代码会导致问题:
res.redirect("/great");
要解决此问题,必须在调用 res.writeHead() 之前完成重定向。以下是修改代码的方法:
app.get('/auth/facebook', function(req, res) { req.authenticate("facebook", function(error, authenticated) { if (authenticated) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.redirect("/great"); console.log("ok cool."); console.log(res['req']['session']); } }); });
通过进行此更改,将在发送响应标头之前尝试重定向,从而防止发生错误。
以上是为什么我在 Node.js/Express 中收到'发送后无法设置标头”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!