Java Spring安全性:提交响应后无法调用sendRedirect()

Java Spring安全性:提交响应后无法调用sendRedirect(),java,spring,web-services,spring-security,Java,Spring,Web Services,Spring Security,我正在使用以下代码注销: public class LogoutHandler extends SimpleUrlLogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletExcept

我正在使用以下代码注销:

public class LogoutHandler extends SimpleUrlLogoutSuccessHandler {


@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {
    if(!response.isCommitted()) {
        String targetURL = "myUrl";
        response.setContentType(MediaType.TEXT_PLAIN_VALUE);
        response.getWriter().write(target);
        response.getWriter().flush();
        response.getWriter().close();
        getRedirectStrategy().sendRedirect(request, response, targetURL);
    }

 }

}
但在调用/注销WS时,我遇到了以下异常:

 java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)
at org.springframework.security.web.firewall.FirewalledResponse.sendRedirect(FirewalledResponse.java:26)
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)

不,在编写正文后不能使用
sendRedirect
,因为这样响应是“提交的”

如果要使用自定义正文重定向,可以设置在写入响应正文之前执行重定向的等效值:

response.setStatus(HttpServletResponse.SC_临时_重定向);
setHeader(“位置”,targetURL);

刷新响应后,您根本无法执行
sendRedirect
我们如何更正我的代码?但是我们应该如何使用
onLogoutSuccess
?没有重定向?现在我没有异常,但我没有重定向到目标页面。我使用嵌入式Tomcat Spring应用程序。这个setHeader可以工作,但不确定为什么setError然后sendRedirect会引发异常,但在独立的tomcat中运行时不会引发异常……但是我们应该如何使用
onLogoutSuccess
?没有重定向?