今日“喜提”一个生产事故。
情况
情况:调用某些接口时,提示前端抛出的自定义错误信息,并没有真正调用接口。反应过来是在请求拦截器中catch来错误。
接下来就是debugger排查,过程中,突然想起之前迭代时给某些接口添加了自定义header,值是后端返回的一个客户ID,而刚好这个值不一般。
id: "123232\u0000\u0000\u0000"
就是这样header的值导致请求出错,直接在请求拦截器中被前端catch到了。
看看是啥
\u开头的是一个Unicode码的字符,每一个\u0000都代表了一个空格。也就是这样的数据在请求头中无法正确解析导致的错误。
办法
后端在传送数据的时候,将这些字符给处理掉。