【问题标题】:Set-Cookie 'expires' attribute parse error due to format由于格式,Set-Cookie 'expires' 属性解析错误
【发布时间】:2014-01-22 08:38:41
【问题描述】:

使用Rails 4.0.0Ruby ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] 似乎无法解析Set-Cookie 标头的expires 属性。

HTTP Response 

< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< Set-Cookie: auth=YWRtaW46MTM5MDI5NzA4MzNjk3MjZjNWI1N2NjMjQzMjE2MjJlYjpBQklRVU8;
    Expires=Wed, 23-Jan-2014 09:38:02 GMT; Path=/api; HttpOnly
< Set-Cookie: JSESSIONID=5AF33D5F3ED6741038E14202935A0AD5.node1; Path=/api/; HttpOnly

在控制器输出中记录cookies object

{"auth"=>"YWRtaW46MTM5MDI5NzA4MzNjk3MjZjNWI1N2NjMjQzMjE2MjJlYjpBQklRVU8", "Expires"=>"Wed", "Path"=>"%2Fapi%2F", "JSESSIONID"=>"4F9344E3A75554E26206FD32F1793AD5.node1"}

这里我看到了两个问题。

  • 属性的解析只输出“Wed”
  • JSESSIONID cookie 缺少路径

我在Rails issues 和谷歌搜索中找不到任何东西。我也一直在查看文档,但找不到与此问题相关的任何内容。

所以我认为我可能忽略或遗漏了一个配置属性来明确告诉Rails Expires 属性格式。

【问题讨论】:

  • 这不是 Rails 问题。 CGI::Cookie#parse 是个破坏者。目前正在尝试理解,WTP。
  • 好像是well-known problem,没人关心。不过,我建议您手动解析它。
  • @mudasobwa 谢谢,我会看看怎么做。

标签: ruby-on-rails ruby cookies ruby-on-rails-4 ruby-2.0


【解决方案1】:

如果您想解析 cookie,此代码可能会有所帮助。

out = "Expires=Wed, 23-Jan-2014 09:38:02 GMT; Path=/api; HttpOnly"
out.split(';').map { |c| c.split('=') }.inject({}) { |result, element|     result[element.first] = element.last;  result }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2015-10-03
    • 2023-02-25
    • 1970-01-01
    相关资源
    最近更新 更多