IE瀏覽器下使用localhost域名儲存cookie的問題
阿新 • • 發佈:2019-01-07
最近在做一個新專案,發現在IE瀏覽器下無法單點登入,經過原始碼檢視追蹤,發現如下程式碼問題
SessionConfig.java
private Integer redisExpireTime = 60 * 60 * 24 * 7;
private Integer cookieExpireTime = 60 * 60 * 2;
private Integer cookieMaxAge = -1;
private String cookieDomain = "localhost";
private String cookiePath = "/";
SessionManager.java
Cookie refreshTimeCookie = new Cookie(REFRESH_TIME_COOKIE_KEY, String.valueOf(System.currentTimeMillis()));
refreshTimeCookie.setMaxAge(sessionConfig.getCookieMaxAge());
refreshTimeCookie.setPath(sessionConfig.getCookiePath());
refreshTimeCookie.setDomain(sessionConfig.getCookieDomain ());
response.addCookie(refreshTimeCookie);
login.js
var login = function() {
if(!$("#account").val() || !$("#pwd").val()) {
$('#error-msg').text("使用者名稱及密碼不能為空.").show();
return;
}
var loginParam = $('#login-form').find('input').serialize();
console.log(loginParam);
$.ajax({
method : 'POST' ,
url : 'account/login',
data : loginParam,
success : function(result) {
if (result && result.code=='0') {
console.log(getUrlParameter('requestURL'));
window.location.href = getUrlParameter('requestURL') + window.location.hash;
$('#error-msg').text('').hide();
} else {
$('#error-msg').text(result.msg).show();
}
}
});
}
現象:
在chrome,firefox瀏覽器下,設定cookie的domain為localhost時是可以正常儲存cookie,但IE是無法儲存
總結:
1. 在cookie設定域名domain為localhost時,IE瀏覽器無法儲存cookie
2. 設定專案程式碼為localhost時,使用http://localhost:8080/訪問,不論你domain設定為什麼,IE瀏覽器同樣無法儲存cookie
解決方案:
1.修改host檔案,修改增加本地的域名對應到127.0.0.1
如:
127.0.0.1 www.360qq.com
2.不要使用localhost開發IE