From 2edcf33ca36134f98ba078731d655f104f89116e Mon Sep 17 00:00:00 2001 From: welefen Date: Fri, 19 May 2017 20:37:06 +0800 Subject: [PATCH] Check headers is sent before set header --- lib/extend/controller.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/extend/controller.js b/lib/extend/controller.js index 1a30ff45..a05ae5a7 100644 --- a/lib/extend/controller.js +++ b/lib/extend/controller.js @@ -1,5 +1,5 @@ const helper = require('think-helper'); - +const debug = require('debug')('thinkjs'); const deprecate = require('depd')('thinkjs'); /** @@ -145,13 +145,19 @@ module.exports = { * @param {Mixed} value */ header(name, value){ + if(value === undefined && helper.isString(name)){ + return this.ctx.header[name]; + } + if(this.ctx.res.headersSent){ + debug(`headers has already sent, url: ${this.ctx.url}`); + return; + } if(value !== undefined){ return this.ctx.set(name, value); } if(helper.isObject(name)){ return this.ctx.set(name); } - return this.ctx.header[name]; }, /** * get userAgent header