HTTPOnly Cookies 是一种安全特性,用于防止跨站脚本攻击(XSS)。当一个 cookie 被设置为 HTTPOnly 时,它只能通过 HTTP(S) 请求访问,而不能通过 JavaScript 访问。这有助于保护敏感数据,防止恶意脚本窃取。
HTTPOnly Cookies 可以分为两类:
HTTPOnly Cookies 常用于存储会话标识符、用户认证令牌等敏感信息。
在 Heroku 上无法在子域之间共享 HTTPOnly Cookies 的原因通常是由于以下原因之一:
Strict
或 Lax
,这会限制 Cookie 在跨站请求中的发送。将 SameSite 属性设置为 None
,并确保 Cookie 使用 HTTPS:
Set-Cookie: sessionId=abc123; Path=/; Domain=example.com; HttpOnly; Secure; SameSite=None
确保 Cookie 的域名设置正确,以便在子域之间共享。例如,如果你想在 sub1.example.com
和 sub2.example.com
之间共享 Cookie,可以将域名设置为 example.com
:
Set-Cookie: sessionId=abc123; Path=/; Domain=example.com; HttpOnly; Secure; SameSite=None
如果你使用的是 Heroku,可以考虑使用反向代理(如 Nginx)来处理跨子域的 Cookie 共享。以下是一个简单的 Nginx 配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://your-app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 设置跨子域 Cookie
add_header Set-Cookie "sessionId=abc123; Path=/; Domain=example.com; HttpOnly; Secure; SameSite=None";
}
}
通过以上方法,你应该能够在 Heroku 上实现子域之间的 HTTPOnly Cookies 共享。
领取专属 10元无门槛券
手把手带您无忧上云