有 Secure 属性的 Cookie 意味着如果浏览器不是使用 HTTPS 与服务建立链接,那么这个 cookie 里的值不会随请求一起向服务器发送。要解决这个问题就需要在 Nginx 中把 cookie 中的 Secure 属性去掉再传给浏览器。解决办法如下:
map $sent_http_set_cookie $resp_cookie {
~*(?<CK_WITHOUT_SECURE>.+)Secure $CK_WITHOUT_SECURE;
}
server {
... ...
location /databoard/ {
... ...
more_set_headers 'Set-Cookie: $resp_cookie';