javascript - cookie 的 Rails 编码与 JavaScript decodeURIComponent 不兼容

标签 javascript jquery ruby-on-rails rack

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/

相关文章:

javascript - componentRecieveProps 获得与渲染中不同的 props 值

javascript - 动态填充 JavaScript 数组

javascript - 在 View 中迭代 JSON

javascript - 电子邮件验证不起作用

ruby-on-rails - Model.first 不从表中检索第一条记录

ruby-on-rails - 使用 Searchkick 或 Rails + ElasticSearch 在地理多边形内进行记录

javascript - 使用 highcharts.js 在每个 xAxis 类别标签上显示自定义图标图像 [html]

Jquery ajax 调用在成功时加载 div 中的整个当前页面

javascript - 如何用拆分 (_) 替换文本

ruby-on-rails - Searchkick按价格或名称顺序返回错误的结果顺序