Nic*_*ilt 5 javascript jquery rack ruby-on-rails
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) }
Run Code Online (Sandbox Code Playgroud)
如您所见,rack util用空格替换空格.
https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L18
如果我使用Javascript的encodeURIComponent,则'hello world'的编码值为
"你好%20world"
但是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 的操作,从而允许您按照您喜欢的方式对其进行解码。