Kilka dni temu, potrzebowałem odczytywać na potrzeby analizy, zawartość ciastka odpowiedzialnego za GUI interfejsu do Susanoo. Jakież było moje zdziwienie gdy zamiast oczekiwanego:

0,1,3,4,2,5,7,6,8||||280||||1200

Railsy widziały samo 0, a dokładniej to wartości do pierwszego przecinka.

Po chwili googlania, znalazłem taką oto wiadomość:

According to RFC 2109, commas aren’t allowed in the cookie value and should be encoded.

Jak się później okazało, Railsy po prostu zachowują się poprawnie ;) więc musiałem nie ładować do ciastka przecinków.

Okazało się to bardzo proste, ponieważ między ciastkiem a warstwą aplikacji mam jeszcze warstwę abstrakcji, w której dzięki niewielkiej zmianie, zamieniam wszystkie przecinki na pauzy w taki sposób:

value = (String(value)).replace(/\,/gi,'-');

Następnie przy odczycie, robię to samo tylko w drugą stronę:

ret = ret.replace(/\-/gi,',');

Dodam tylko, że w zawartości ciastka, nie powinno być także poniższych znaków:

()<>@;:\"/[]?={}

oraz spacji i tabulatorów.