我想在一个cookie中存储3个值 - 以逗号分隔。 我试过这个:
cookies[:location] = "#{params[:lat]},#{params[:lon]},#{params[:city]}"
逗号被转义。结果像“%2C ......”
我尝试了html_safe
,raw
等不同方式,但我没有成功。
我在这做错了什么?如何创建一个包含三个或更多以逗号分隔的值的cookie?
答案 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