Cookie&转义:在Cookie中存储以逗号分隔的列表

时间:2013-12-18 14:57:49

标签: cookies ruby-on-rails-3.2

我想在一个cookie中存储3个值 - 以逗号分隔。 我试过这个:

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

逗号被转义。结果像“%2C ......” 我尝试了html_saferaw等不同方式,但我没有成功。 我在这做错了什么?如何创建一个包含三个或更多以逗号分隔的值的cookie?

1 个答案:

答案 0 :(得分: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

更新但浏览器未遵循此标准。在我练习传递逗号的过程中,你可以通过cookie-octet转义DQUOTE(这个cookie集由Java EE Cookie对象引用服务器端):

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