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导致,检查代码,发现是ServerAuthenticationFailureHandler
的onAuthenticationFailure
方法返回null
,对比ServerAuthenticationSuccessHandler
的onAuthenticationSuccess
方法返回的是Mono.empty()
。
修改返回为Mono.empty(),再次测试,发现可以正常获取返回信息。