【问题标题】:nginx add_header Set-Cookie expires not workingnginx add_header Set-Cookie 过期不起作用
【发布时间】:2019-09-06 00:20:36
【问题描述】:

我正在尝试设置一个 nginx 服务器,当点击某个位置时,它会在 cookie 中设置某些参数。

我有以下配置,将参数放入 cookie 但过期不起作用。这是我的配置:

server {
    listen       8800 default_server;
    include /etc/nginx/default.d/*.conf;

    server_name test.net;

    location /initial {
            add_header Set-Cookie lcid=1043;
            add_header Set-Cookie expires=60;
    }
}

根据我的理解,在设置此 cookie 60 秒后,cookie 应该会过期并被删除。但是,它仍然存在。

这个配置有什么问题吗?

任何帮助将不胜感激, 谢谢!

【问题讨论】:

    标签: nginx cookies session-cookies nginx-config setcookie


    【解决方案1】:

    发现这可以直接从 Wordpress 上游完成。

    将以下行添加到 wp-config.php 的顶部:

    @ini_set('session.cookie_httponly', true);
    @ini_set('session.cookie_secure', true);
    @ini_set('session.use_only_cookies', true);
    

    然后重新启动 Wordpress。

    【讨论】:

      【解决方案2】:

      上述配置将导致设置两个 Set-Cookie 标头作为响应发送给客户端。

      Set-Cookie: lcid=1043
      Set-Cookie: expires=60
      

      “Expires”是一个 cookie 属性,应该出现在您设置 cookie 名称和值的标题中。这里还有一点需要注意的是,cookie 的 Expires 属性只需要一个固定的时间戳(例如:Expires=Wed,2015 年 10 月 21 日 07:28:00 GMT)而不是持续时间。如果您需要根据持续时间指定 cookie 的有效性,则需要设置 Max-Age 属性而不是 Expires。

      因此,您需要将配置更改为只有一个 add_header 指令,如下所示

      add_header Set-Cookie "lcid=1043; Max-Age=60";
      

      这将确保客户端在响应中仅收到一个 Set-Cookie 标头,并在 cookie 的 Max-Age 属性中指定了适当的到期值。

      【讨论】:

      • 感谢您的回复 - 我将在今天晚些时候修改代码并更新此帖子
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 2018-11-03
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多