我的登录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。
有人遇到同样的问题吗?还是有人可以指出我的代码中的问题并加以解决?
谢谢
亚历克斯
答案 0 :(得分:0)
足够奇怪:使用location.href解决了这个问题。 Chrome的行为没有什么不同,但是在IE11位置。href不会创建新会话,但window.location.href会创建新会话。