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(),再次測試,發現可以正常獲取返回信息。