Mam app Sinatra używając Rack :: Session :: Cookierozmiar danych Cookie przekracza 4K - Ale jej „tylko” 1100 bajtów szyfrowane
use Rack::Session::Cookie, :key => 'my.key',
:path => '/',
:expire_after => 3600, # In seconds
:secret => 'something'
Mam jedno miejsce w sesji, gdzie ustawić dane, i zrobić zrzut sesji, czyli około 600 bajtów tuż przed wywołaniem erb
puts "session is #{session.inspect}" ==> 400 bytes of text
Potem dostać
Warning! Rack::Session::Cookie data size exceeds 4K.
Warning! Rack::Session::Cookie failed to save session. Content dropped.
Fun Wygląda na to, że wszystko działa, ponieważ wszystko, co ustawiam na sesji, wraca do mnie podczas kolejnego uderzenia. Rozmiar sesji zgłoszony w oknie programowania Safari wynosi 1195 bajtów i wszystko wygląda na zaszyfrowane itp.
Jakieś pomysły na to, jak to może się dziać? Wygląda na to, że wiadomość jest fałszywa, ale patrząc na kod Rack: Session - wydaje się, że coś jest wyrzucane ...
Czy to stara wartość ciasteczek? –
session.inspect nie jest tym, co chcesz sprawdzić, jeśli interesuje Cię ilość danych wymaganych przez sesję. Coś jak 'Marshal.dump (session.to_hash)' jest bliżej znaku –
Jeśli otrzymam sesję jako ciąg znaków, to wywołaj Marshall.dump, a następnie zaszyfruję, otrzymuję 1300 bajtów, co pasuje do tego, co widzę jako ciastko. Więc wciąż nie ma szczęścia, żeby to zrozumieć. –