Я использую весенний ботинок, весной mvc и весной безопасности, чтобы сделать простой сайт. На странице входа у меня есть флажок. Когда он отмечен галочкой и логин, для браузера создается cookie с помпом. Я пробовал как хром, так и firefox.Весна Безопасность запомнить меня печенье Юникод символов неправильно
Печенье находится ниже.
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
Я изменил кодировку по умолчанию на UTF-8 на моем компьютере, и это работает! Удивительно, но мой Linux-сервер по умолчанию уже UTF-8, поэтому он работает сразу. Спасибо за помощь. – weijun