2016-02-28 418 views
0

我不明白這一點。一個小時前,它工作,突然間我無法取回我剛剛設置的cookie。在Chrome瀏覽器,我可以看到該Cookie實際上是有,但如果我試圖把它找回來是null爲什麼我的cookie始終爲空?

private void setLoggedInCookie(String sessionId) { 
    String domain = this.getDomain(); 

    Cookies.setCookie(ApiParameters.LOGIN_COOKIE, sessionId, expires, domain, "/", true); 
    String cookie = Cookies.getCookie(ApiParameters.LOGIN_COOKIE); 

    // Getting NOTHING from this .. 
    for (String string : Cookies.getCookieNames()) { 
     LOGGER.info("Cookie name: " + string); 
    } 

    if(cookie == null) { 
     throw new RuntimeException("Cookie is 'null'."); 
    } 
} 

private String getDomain() { 
    LOGGER.fine("Host name: " + Window.Location.getHostName()); 
    String domain = Window.Location.getHostName().replaceAll(".*//", "").replaceAll("/", "").replaceAll(":.*", ""); 
    return "localhost".equalsIgnoreCase(domain) ? "localhost" : domain; 
} 

這是怎麼回事?

回答

2

您傳遞域名「null」。瀏覽器僅允許訪問與當前頁面的域相關的cookie。由於您試圖從不是「null」的頁面訪問它,因此您無法獲取它。

此外,請確保您嘗試使用SSL訪問它,因爲您將「secure」參數設置爲true。

+0

即使我將它設置爲'localhost',它也不起作用。就像在我的問題中指出的那樣:我可以在Chrome/Firefox設置中看到Cookie,但是我沒有從'Cookies.getCookie()'返回。 – displayname

+0

確保您嘗試使用SSL訪問它,因爲您已將其設置爲true。注意:你可以隨時設置一個cookie - 它對你獲得它的能力沒有影響。 –

+0

錯誤是將其設置爲安全。我將它從'false'改爲'true',並不知道這意味着我必須使用SSL訪問它!設置域似乎並不是一個問題,但至少不用於取回它。謝謝! – displayname