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.