netty请求行超出长度
说明:记录一次使用Netty异常,如下:
错误信息:An HTTP line is larger than 4096 bytes.
场景
项目是微服务架构,在使用Netty转发请求到其他服务的时候报了这个错误。因为该请求是GET方式,其中有个参数值是中文,中文拼接在URL后面又会被转成%DE%3A……
这样的编码,就超出了长度。
解决
有以下两个解决方案:
(1)请求方式改为POST;
(2)在请求发起方的服务配置里调整请求行的最大限制,如下,可调整为8192
server:
netty:
max-initial-line-length: 8192
max-header-size: 8192
max-chunk-size: 8192
推荐用(1),方法(2)治标不治本,博主试过8个字符(%DE%3A这样的)才能转为1个中文汉字,也就是说8192最多也只能携带1000个汉字。