【发布时间】:2019-12-09 02:21:00
【问题描述】:
我正在浏览器上尝试一些 URL,它在包括 IE 10 在内的所有浏览器上都运行良好,但是在 Microsoft Edge 上,它在执行 HttpServletResponse sendRedirect 时会失败,这会使 HttpServletRequest 会话过期并且不会出现预期的页面。 请帮助我们如何解决这个浏览器特定的重定向会话问题。
基本代码:
public class MyServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// some code where values are set in session
session.setAttribute(myAttribute, value);
response.sendRedirect("https://qa.sys.com/MainPage.jsf");
}
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
// myAttribute below comes null as request.getSession() is null
Boolean myAttribute = request.getSession().getAttribute(myAttribute);
}
在日志中,我得到了这个异常:-
java.lang.IllegalStateException: Response already committed at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:1861) at weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:961) at weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:956) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) Truncated. see log file for complete stacktrace
【问题讨论】:
-
请发布复制此问题的最小代码示例。
标签: java browser microsoft-edge servlet-filters