nginx add_header Set-Cookie过期不起作用

时间:2019-04-16 00:36:18

标签: nginx cookies

我正在尝试设置一个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应该失效并被删除。但是,它仍然存在。

此配置有什么问题吗?

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

2 个答案:

答案 0 :(得分:0)

以上配置将导致设置两个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属性中指定的适当的到期值。

答案 1 :(得分:0)

发现可以直接在Wordpress的上游完成此操作。

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

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

然后重新启动Wordpress。