报错背景: 在做开源项目《瑞吉外卖》时,编写拦截器代码后,前端登录时,后端报错如下:
思考与思路:
Cannot call sendError() after the response has been committed.....意思是,当response已经提交后,不能再sendError()。那也就是说,我在代码中一定是response响应了多次。
查询相关网文后,理解到:前端与后端进行http交互时,当response后,支持其交互的Socket已经关闭,在Socket关闭状态下,若再response,就会报Cannot call sendError() after the response has been committed.....错误!
解决:
发现自己的代码,在方法的最开始就已毫无条件的将任何资源都放行,即 filterChain.doFilter(request, response);当此行代码后,再继续编写执行关于response的代码,就会报错上面的错误。所以,将此行代码注释掉即可。
相关网文链接:
Cannot call sendError() after the response has been committed - 夜无良 - 博客园 (cnblogs.com)