我使用春季啓動,春季mvc和春季安全,使一個簡單的網站。在登錄頁面中,我有一個記住我的複選框。當它被打勾並登錄時,爲瀏覽器創建一個記憶我的cookie。我已經嘗試了Chrome和Firefox。春季安全記得我的cookie Unicode字符錯誤
該cookie位於下方。
Name: remember-me
Content: Pz8/Pz8/OjE0NjQ5ODcxMjQxMDk6YTc1MDMzNTM0ZmNhNjc3YmUwOTljZGNjN2EyYTk1NjM
Domain: localhost
Path: /gy
Send For: Any kind of connection
Accessible to Script: No (HttpOnly)
Created: Friday, 20 May 2016 at 21:52:04
Expires: Friday, 3 June 2016 at 21:52:04
以上內容是base64格式。解碼後的字符串如下。
??????:1464987124109:a75033534fca677be099cdcc7a2a9563
第一部分是用戶名是中國字符,但顯示爲??????。
我知道要將Unicode字符保存到cookie中,我們應該先使用URLEncoder類對其進行編碼,然後在讀取它之後對其進行解碼。我是Java和Spring的新手,所以不知道如何自定義記住我的cookie來處理Unicode字符。
任何線索來解決這個問題將不勝感激。謝謝!
謝謝你的出色答案。與用戶的便利性相比,安全性並不是這個網絡應用的一大問題。正如你所建議的,我絕對不會在企業網站中使用這個功能。在Spring團隊修復此錯誤之前,有什麼方法可以解決這個問題,即讓我記得我爲unicode工作? – weijun
您可以嘗試將服務器上的默認編碼設置爲UTF-8,以便可以訪問所有字符。這可以通過將'-Dfile.encoding = UTF8'作爲選項傳遞給Java運行時來完成;你如何設置取決於你使用的容器/操作系統。 – bobince
我已將默認編碼更改爲我的開發PC上的UTF-8,並且工作正常!令人驚訝的是,我的Linux服務器的默認編碼已經是UTF-8,所以它可以直接使用。感謝您的幫助。 – weijun