jquery.cookie 使用 decodeURIComponent 检索值。 https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js#L89
Rails 通过调用存储 cookie
@set_cookies.each { |k, v| ::Rack::Utils.set_cookie_header!(headers, k, v)
if write_cookie?(v) }
如您所见,rack util 将空格替换为加号。
https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L18
如果我使用 Javascript 的 encodeURIComponent,那么“hello world”的编码值为
“你好%20世界”
但是 rails 将 cookie 值存储为
“你好+世界”
谁是对的?
我在哪里可以看到规范中关于存储 cookie 值的内容。
最佳答案
不确定这个问题是否已经被放弃,但最近我自己也遇到了类似的问题。
Cookie 在 RFC2109 中定义:http://www.ietf.org/rfc/rfc2109.txt 该标准引用了 RFC2068 的某些定义或特殊字符等:http://www.ietf.org/rfc/rfc2068.txt
据我所知,它只定义了您不能在 cookie 值中使用保留字符。它似乎没有定义您必须使用的编码方案。即,只要您始终如一地这样做,都可以。
在您的 jQuery cookie 代码中,您可以指定 'raw' 选项,它不会执行 decodeURIComponent 内容,允许您按照自己喜欢的方式对其进行解码。
关于javascript - cookie 的 Rails 编码与 JavaScript decodeURIComponent 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757186/