2013-12-18 73 views
0

我想在一個cookie中存儲3個值 - 逗號分隔。 我試過這個:Cookie&轉義:存儲逗號分隔Cookie中的列表

cookies[:location] = "#{params[:lat]},#{params[:lon]},#{params[:city]}" 

逗號得到了轉義。導致像「%2C ...」 我嘗試了不同的方式與html_safe,raw等,但我沒有成功。 我在這裏做錯了什麼?我如何創建一個由三個或更多值逗號分隔的cookie?

回答

0

逗號禁止在cookie值rfc6265

cookie-header = "Cookie:" OWS cookie-string OWS 
cookie-string = cookie-pair *(";" SP cookie-pair) 
cookie-pair = cookie-name "=" cookie-value 
cookie-value = *cookie-octet/(DQUOTE *cookie-octet DQUOTE) 

cookie-octet = %x21/%x23-2B/%x2D-3A/%x3C-5B/%x5D-7E 
        ; US-ASCII characters excluding CTLs, 
        ; whitespace DQUOTE, comma, semicolon, 
        ; and backslash 

UPDATE但是後面沒有瀏覽器的這個標準。在我的練習中,通過逗號可能會跳出cookie-octetDQUOTE(此cookie通過Java EE Cookie對象引用服務器端):

Cookie: auth="USER,password,2014-01-01"; lang=EN 
Cookie: auth="USER,password,2014-01-01"; lang=EN