Cookie 的 Secure 属性设置

通过 Secure 属性让 Cookie 仅在 HTTPS 请求中携带

问题

如何设置 Cookie 只在 HTTPS 请求时携带?

解答

设置 Cookie 的 Secure 属性即可实现。

设置方式

// 服务端设置(Node.js 示例)
res.setHeader('Set-Cookie', 'sessionId=abc123; Secure');

// 或使用 cookie 库
res.cookie('sessionId', 'abc123', {
  secure: true
});
// 客户端设置
document.cookie = "sessionId=abc123; Secure";

工作原理

当 Cookie 设置了 Secure 属性后,浏览器只会在 HTTPS 或其他安全协议的请求中将该 Cookie 发送到服务器。HTTP 请求不会携带带有 Secure 属性的 Cookie。

默认情况下,Cookie 不带 Secure 属性,因此无论是 HTTP 还是 HTTPS 请求都会携带该 Cookie。

注意事项

Secure 属性只是限制 Cookie 的传输条件,并不会加密 Cookie 内容或阻止客户端查看。用户仍然可以在浏览器开发者工具中看到带有 Secure 属性的 Cookie。

关键点

  • Secure 属性让 Cookie 仅在 HTTPS 等安全协议下发送
  • 默认情况下 Cookie 不带 Secure 属性,HTTP 和 HTTPS 都会携带
  • Secure 不会加密 Cookie 内容,用户仍可在浏览器中查看
  • 建议敏感信息的 Cookie 始终设置 Secure 属性