记录一次自己写出来的bug.
首先自己在gateway中做了filter,操作了header
操作中返回的报错400 nginx, 所以一直将矛头指向了nginx配置,但是各种查询和修改后,错误依旧.
静下心来一步步的看,发现请求实际上已经通过nginx发送到了gateway中,并且gateway日志中也清楚的记录了log.
一行行的查看代码
HttpHeaders headers = new HttpHeaders(); headers.putAll(exchange.getRequest().getHeaders()); headers.add("test","test"); headers.remove(HttpHeaders.CONTENT_LENGTH); headers.setContentLength(headers.getContentLength());
这里的 headers.remove(HttpHeaders.CONTENT_LENGTH); headers.setContentLength(headers.getContentLength());
这个操作造成了错误,我发现写了这行代码之后contentlenth在浏览器请求中显示的是552,去掉之后显示的是172.
查看源码:设置body的字节长度,执行header中content-length的长度
所以单纯的修改header不需要修改这个数据