【问题标题】:Creating Non-session Cookies with Symfony HttpFoundation使用 Symfony HttpFoundation 创建非会话 Cookie
【发布时间】:2014-07-31 21:24:10
【问题描述】:

我需要怎么做才能使用不会随会话过期的 HttpFoundation 组件创建 cookie?

背景

我正在使用 Symfony 的 HttpFoundation 组件。我没有使用整个 Symfony 框架。我能够使用该组件存储和检索会话 cookie。

每当我将 cookie 过期时间更改为 0 以外的值时,它们都不会保存。

这将创建一个会话 cookie:

new Cookie( $cookie_name, $cookie_value, 0, '/', null, false, false);

这不会创建 cookie:

new Cookie( $cookie_name, $cookie_value, 10000, '/', null, false, false);

【问题讨论】:

  • 能否请您发布两个代码生成的确切 HTTP 响应(标头)?

标签: symfony cookies session-cookies


【解决方案1】:

感谢Crozin的反馈,我查看了帖子标题,发现了问题。

过期时间为 0 的标头:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:49:50 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d7986e073ef; path=/\r\n

过期时间为 10000 的标头:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:50:53 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d798ad3696e; expires=Thu, 01-Jan-1970 02:46:40 GMT; path=/\r\n

问题,我把过期时间的值类型错误,应该是这样的

$expire  =  time() + (3600 * 48);
new Cookie( $cookie_name, $cookie_value, expire, '/', null, false, false);

正确的结果是:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:56:58 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d79a1a3f335; expires=Thu, 31-Jul-2014 12:56:58 GMT; path=/\r\n

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 2011-12-27
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多