1. 程式人生 > >IE瀏覽器下使用localhost域名儲存cookie的問題

IE瀏覽器下使用localhost域名儲存cookie的問題

最近在做一個新專案,發現在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