解决 n8n “secure cookie” 报错的三种方法
当你运行 n8n 时,可能会遇到如下提示:
Your n8n server is configured to use a secure cookie,
however you are either visiting this via an insecure URL, or using Safari.
这意味着 n8n 启用了安全 Cookie(N8N_SECURE_COOKIE=true),但当前访问不是 HTTPS,或浏览器(如 Safari)拒绝在非安全连接中传输 Cookie。
一、问题原因
n8n 默认要求所有登录 Cookie 通过 HTTPS 传输。
如果你使用的是 http://localhost:5678 或 IP 地址访问,浏览器会拒绝发送 Cookie,从而无法登录。
二、解决方案
方法一:启用 n8n 自带 HTTPS(推荐)
-
生成自签名证书:
mkdir -p ~/n8n/certs openssl req -x509 -newkey rsa:4096 -keyout ~/n8n/certs/server.key -out ~/n8n/certs/server.crt -days 365 -nodes -subj "/***=localhost" -
修改启动命令:
docker run -it --rm \ --name n8n \ -p 5678:5678 \ -e N8N_PROTOCOL=https \ -e N8N_SSL_KEY=/certs/server.key \ -e N8N_SSL_CERT=/certs/server.crt \ -v n8n_data:/home/node/.n8n \ -v ~/n8n/certs:/certs \ docker.n8n.io/n8nio/n8n -
访问地址:
https://localhost:5678
🔒 尽管浏览器会提示“自签名证书不受信任”,但通信是加密的,适合本地开发。
方法二:改用 localhost 或其他浏览器
如果只是本地测试:
- 使用
http://localhost:5678而不是127.0.0.1 - 或尝试 Chrome / Firefox(Safari 对 Cookie 管理更严格)
方法三:关闭安全 Cookie(仅限本地)
在本地调试时可以关闭安全验证:
export N8N_SECURE_COOKIE=false
n8n start
或在 Docker 中:
-e N8N_SECURE_COOKIE=false
⚠️ 不建议在线上环境中禁用此功能。
三、总结
| 场景 | 方案 | 安全性 |
|---|---|---|
| 本地测试 | 方法三 | 低 |
| 本地长期使用 | 方法一 | 高 |
| 线上部署 | 使用 Nginx/Caddy 反向代理自动申请 HTTPS | 最高 |
一句话总结:
“secure cookie” 报错的根本原因是未使用 HTTPS。最简单的解决方法是为 n8n 启用自签名证书,让它自己以 HTTPS 方式启动。