不同端口(如 localhost:3000 和 localhost:5000)之间的 Cookie 是否共享?

在不同的本地端口上运行的应用程序之间,Cookie 是否会被共享?这是理解浏览器如何处理跨域请求的重要基础。

浏览器机制 中等 Cookie 跨域 跨域问题

localhost:3000 与 localhost:5000 的 cookie 信息是共享的。

虽然同源策略(Same-Origin Policy)通常要求相同的协议、域名和端口才允许共享资源(如域名中的端口不同可能导致跨域问题),但在 cookie 的实现中,大多数浏览器遵循基于域而不区分端口的机制:

  • cookie 是通过域名(host)进行存储和管理,而不是直接与端口绑定。因此,在同一 IP 地址(如 localhost)下的不同端口,cookie 会被浏览器视为同一个域。
  • 这意味在 localhost:3000 设置的 cookie,可以在 localhost:5000 上共享和访问,反之亦然。
  • 需要注意的是,cookie 共享仅在协议一致时才有效(两者都是 HTTP 或 HTTPS),否则安全限制可能阻止共享。另外,如果设置了 cookie 的 Secure 属性、HttpOnly 或特定的 Domain,共享行为可能受影响。

如果开发中需要跨端口共享 cookie,这是一种常见的配置,但需遵循安全最佳实践。