Vue配合SpringCloud打包发布后,接口报net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 ,OK

背景

项目架构为Vue + SpringCloud,发布测试环境,页面用nginx代理,并转发ajax请求到SpringCloud gateway。

登陆接口在gateway中实现,gateway采用webflux,安全认证为SpringSecurity。

现象

登陆失败的时候,一直没办法拿到后台的报错信息,但是本地开发环境没有这个问题。另外其他接口均没有这个问题。

分析处理

一开始以为是因为后台返回的http状态码为500导致的,修改为200后还是不行。然后才注意到控制台的报错。

net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

看这意思是数据没接收完整。

查看nginx日志,报错如下:

upstream prematurely closed connection while reading upstream

查找资料,显示“上游服务器提前断开链接”,感觉问题出在gateway上。

查看gateway日志,有如下报错

The nextFactory returned a null Publisher

查找资料,别人说是filter中返回null导致,检查代码,发现是ServerAuthenticationFailureHandleronAuthenticationFailure方法返回null,对比ServerAuthenticationSuccessHandleronAuthenticationSuccess方法返回的是Mono.empty()

修改返回为Mono.empty(),再次测试,发现可以正常获取返回信息。