标题几乎不言自明,但总是检查isCommitted()
类型是否有价值ServletResponse
?我的特定示例是使用过滤器,如果用户无权执行特定操作(CSRF 检查具体),我会执行以下操作:
if (!httpResp.isCommitted()) {
httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
在这种情况下,我检查了响应几乎感觉有点矫枉过正。我的过滤器位于链的顶部,在它之前应该没有任何东西会提交响应(更不用说允许过滤器链继续如果它这样做了),但我不禁觉得这是一个假设我不应该制作的良好防御性编程的名称。我觉得检查响应的状态是个好习惯。
那么,综上所述,在这个时间点检查响应是否有价值?为了进一步扩展这一点,每次 修改响应时始终检查这一点是否是一种好习惯?就我而言,除了当 CSRF 令牌不匹配时抛出的异常(假设这只会在攻击场景中发生)之外,我几乎找不到支持其他东西的理由。