2 回答
TA贡献1856条经验 获得超17个赞
我尝试了你的代码,它的工作原理。成功返回了不同的错误代码。虽然,我想指出几件事 -
该方法将响应发送到客户端,并清除响应缓冲区。因此,您之后将其写入响应的任何内容都毫无用处。
sendError()呼叫也毫无用处。当您调用 时,HTTP 响应和 HTTP 响应代码已在上一行中发送到客户端。
setStatus()sendError()
现在,这是我的假设,为什么你的代码不适合你,但它对我有用 -
您可能获得 HTTP 404 的原因是您的 API 不存在。这可能是由于拼写错误,也可能是由于一个简单的无知,例如调用您的API命名,即带有额外的尾随正斜杠。我相信您的过滤器正在成功执行,您必须在那里做一些有用的事情,而不是您在问题中解释的示例代码。/foo/bar/foo/bar/sendError()
此外,在筛选器中引发异常时,控件不会到达 API,并且不会发生 API 查找。因此,由于未处理的异常而不是 HTTP 404,默认的 HTTP 500 响应将发送到客户端。
TA贡献1864条经验 获得超6个赞
仅当在以下时间之后执行时,它才会按预期返回 401setStatusout.write
PrintWriter out = response.getWriter();
out.write("");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
添加回答
举报
