关于 can't set headers after they are sent 错误解析

错误描述

这个错误翻译过来是在headers发送过以后不能再次发送。意思是发送了两次headers,所以会报错。

然后通过我的不懈努力,终于找到了问题所在。

解析

在处理HTTP请求时,服务器会先输出响应头,然后再输出主体内容,而一旦输出过一次响应头比如执行过 res.writeHead() 或 res.write() 或 res.end(),你再尝试通过 res.setHeader() 或 res.writeHead() 来设置响应头时,就会报这个错误。

有些方法比如 res.redirect() 会调用 res.writeHead()

说明:express中的 res.header() 相当于 res.writeHead() ,res.send() 相当于 res.write()