Midway v2.11.3 发布,Serverless 错误安全性更新
增强
1、日志对象 info 增加原始参数
从新版本开始,logger 中的 info 参数,将增加 originArgs 属性,其中保存了用户原始调用的参数。
logger.info(1,2,3,4);
printFormat(info => {
info.originArgs // [1,2,3,4]
});
2、隐藏 serverless 非 http 触发器返回的错误堆栈
在先前版本,如果在非 http 场景下,业务直接 throw err,会直接将错误对象返回给网关,由网关返回给调用方,考虑到在线上如果直接返回,会将业务代码的堆栈(结构)暴露,有一定的安全性风险。
新版本,在线上环境中,我们会将错误隐藏为统一的 internal error,只在日志中透出具体的堆栈信息,行为和之前的 http 触发器保持一致。
3、@Headers 装饰器忽略大小写判断
之前 @Headers 获取头数据,会根据指定的 key 去获取,由于 header 头本身是可忽略大小写的,会导致用户无法正确的取到头。
新版本我们做了处理,在获取 header 值时,忽略大小写。
// header { 'X-ABC': '123'}
async invoke(@Headers('x-abc') value) {
// value => 123
}
其他
- prometheus 在 close 时候 server 判空处理,感谢 @waitingsong 的 PR。