2012-02-29 5 views
9

Tengo una aplicación Sinatra usando rack :: :: Sesión Cookiestamaño de los datos de cookies excede 4K - Pero sus 'sólo' 1100 bytes cifrado

use Rack::Session::Cookie, :key => 'my.key', 
          :path => '/', 
          :expire_after => 3600, # In seconds 
          :secret => 'something' 

tengo un lugar en la sesión donde hice los datos, y hago un volcado de la sesión, que es de unos 600 bytes justo antes de la llamada erb

puts "session is #{session.inspect}" ==> 400 bytes of text 

Entonces consigo

Warning! Rack::Session::Cookie data size exceeds 4K. 
Warning! Rack::Session::Cookie failed to save session. Content dropped. 

Diversión Lo que pasa es que todo parece estar funcionando, en el sentido de que todo lo que establezco en la sesión me llega en el siguiente golpe. El tamaño de la sesión como se informó en la ventana de desarrollo de Safari es de 1195 bytes, y todo parece encriptado, etc.

¿Alguna idea sobre cómo podría estar pasando esto? Parece que el mensaje es espurio, pero mirando el código Rack: Session - parece que algo está siendo abandonado ...

+4

¿Es el valor de la antigua cookie? –

+0

session.inspect no es lo que desea verificar si le interesa la cantidad de datos que requiere la sesión. Algo como 'Marshal.dump (session.to_hash)' está más cerca de la marca –

+0

Si obtengo la sesión como una cadena, luego invoco Marshall.dump, seguido de un cifrado, obtengo 1300 bytes, que coincide con lo que veo como una Galleta. Así que aún no tuvimos suerte en descubrirlo. –

Respuesta

2

Fred tiene razón. session.inspect no te mostrará el tamaño exacto de la longitud de la cadena de cookies. Puede usar tcpdump para tener una mejor idea de su tamaño;

tcpdump -s 1500 -A anfitrión y el puerto

luego hacer la solicitud y la salida del volcado ASCII real de los datos de las cookies.

lal00 es probable en el problema subyacente real

Cuestiones relacionadas