IE11-Cient端重定向到jsp无法评估会话属性

时间:2019-05-21 16:28:08

标签: javascript jsp internet-explorer httpsession window.location

我的登录ajax调用就是这样

        $.get("LoginServlet", {'agileid': id, 'passwd': passwd, 'remember': 'yes' }, function(data) {
        var results = JSON.parse(data);
        if ( results.status == "failed") alert(data);
        else window.location.href = 'Main.jsp'; 
    });

我的LoginServlet将设置一个无法保存在客户端的会话属性特殊对象。

在Main.jsp中,将确定会话对象的存在并执行必要的操作。

<%@page import="agile.px.myagiledashboard.listeners.SessionResourcesObject"%>
<%@ page contentType="text/html;charset=UTF-8" session="false" %>
<!DOCTYPE html>
<%
HttpSession hSession = request.getSession();
System.out.println("Main.jsp: " + hSession.getId()); //This is to make sure the session is the same as in LoginServlet request
SessionResourcesObject SRO = (SessionResourcesObject)    hSession.getAttribute("SRO");
String userName = "";

if ( SRO != null) {
try {
    userName = SRO.getCUser();
    System.out.println("main.jsp: " + userName);
} catch (Exception e) {

}

}

%>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
....

该代码可与Chrome一起使用,但是在IE11中运行时(在兼容模式下-公司IT策略-无法更改),会话对象在重定向到jsp页面后始终为null。

有人遇到同样的问题吗?还是有人可以指出我的代码中的问题并加以解决?

谢谢

亚历克斯

1 个答案:

答案 0 :(得分:0)

足够奇怪:使用location.href解决了这个问题。 Chrome的行为没有什么不同,但是在IE11位置。href不会创建新会话,但window.location.href会创建新会话。