服務端寫入cookie用戶端取不到的解決辦法__java

來源:互聯網
上載者:User

      今天發現一個問題,程式在本地運行好好地,打包到伺服器,無論怎麼加日誌,更新打包,最後還是有問題,

一步一步定位問題,發現是cookie的問題。

     服務端定義設定cookie的代碼: 

public void setCookie(HttpServletRequest request, HttpServletResponse response, String key,String value) {        Cookie cookie = new Cookie(key, value);// 建立一個cookie,cookie的名字是key                cookie.setDomain(request.getServerName());        cookie.setPath(request.getContextPath());        // 設定Cookie的有效期間        cookie.setMaxAge(Constants.cookieMaxAge);         // cookie.setHttpOnly(true);                         // 將cookie對象添加到response對象中,這樣伺服器在輸出response對象中的內容時就會把cookie也輸出到用戶端瀏覽器          response.addCookie(cookie); }

      最開始是懷疑cookie沒有在服務端寫入,後來通過日誌,探索服務端寫入了,但是用戶端怎麼也取不到。以前做

web開發時遇到cookie的問題,基本就是域和路徑的問題,但是本地運行沒有問題,而且線上環境也沒有問題,我開始

琢磨應該是別的問題,到期時間問題。

      我們設定的時間是43200秒也就是12個小時,但是實際上看到進入首頁,確實寫入了cookie,但是到期時間是在服務

器時間的12小時之後,這裡就是問題的重點。測試伺服器時間設定的超前了。

      最後發現測試環境的機器確實被人動過,時間改為了當天較早的時間,而我們的cookie到期時間是12個小時,即使

是12個小時即43200秒也是過了目前時間,後來修改測試環境時間為目前時間就好了,這樣tomcat也不用重啟。

    修改伺服器時間:

 

    說明一點,如果在伺服器端將cookie的httpOnly屬性設定為true,也是會導致伺服器寫入了cookie,用戶端取不到cookie。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.