Cannot call sendError() after the response has been committed

过滤器中报错:在提交响应后无法调用sendError()

(1)业务场景

我做了一个全局过滤器去处理了一下Cros跨域漏洞的问题,我没有处理不符合跨域原则情况,被同事指出,说页面给个提示会比较友好一些,然后在情急之下,加了两行代码,整出问题来了。

问题代码:

(2)报错信息如下:

Cannot call sendError() after the response has been committed

字面意思就是response被调用了两次,导致无法调用sendError方法。

(3)错误原因

如果满足跨域条件,执行了chain.doFilter(request, response);这行代码之后,也就是放行了请求。那么在请求执行之后,由于下面还有代码,会继续执行下面的代码。这就导致了再次使用了response,所以报错了。

(4)解决方案

修改代码如下:

页面的友情提示:

感觉这个提示也不友好,然后我又改了一下。

展示如下:(我使用postman调用不乱码,使用浏览器直接访问会乱码,改为gb2312编码显示就正常了。)

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值