Я использую код из примера под названием «Пример чуть большего размера» из этого урока http://rubylearning.com/blog/2009/09/30/cookie-based-sessions-in-sinatra/, чтобы выяснить, как отправить файл cookie в приложение Sinatra, но я не могу понять, как установить значения правильно
Когда я устанавливаю имя «brandon» в приложении, оно создает cookie со значением BAh7BiIJdXNlciIMYnJhbmRvbg%3D%3D%0A
, которое является кодировкой URL (http://ostermiller.org/calc/encode.html) значения BAh7BiIJdXNlciIMYnJhbmRvbg==
Используя это значение, я могу правильно отправить файл cookie в приложение
curl -b "rack.session=BAh7BiIJdXNlciIMYnJhbmRvbg==" localhost:9393
Я почти уверен, что значение является кодировкой base64 хеша ruby для сеанса, поскольку документы (http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html) скажем
Сеанс представляет собой Ruby Hash, который хранится в виде маршалированных данных в кодировке base64 и имеет значение: ключ (по умолчанию: rack.session).
Я думал, что это значит, что все, что мне нужно было сделать, это кодировать base64 {"user"=>"brandon"}
и использовать его в команде curl. К сожалению, это создает значение, отличное от BAh7BiIJdXNlciIMYnJhbmRvbg==
. Затем я попытался взять закодированное в base64 значение и декодировать его в различных декодерах base64 онлайн, но это привело к появлению странных символов (прямоугольника и других), поэтому я не знаю, как воссоздать значение, чтобы даже закодировать его.
Итак, мой вопрос: знаете ли вы, какие символы / формат мне нужны, чтобы получить правильную кодировку base64, и / или знаете ли вы другой способ передать значение с помощью curl, чтобы оно регистрировалось как надлежащий файл cookie для приложения Sinatra?