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

最近遇到一个很有意思的问题,记录一下;

首先第一思路就想到了同源策略和跨域问题,第一感觉是不可共享。
但是在实际操作中却发现可以共享

协议地址:https://datatracker.ietf.org/doc/html/rfc6265#page-13
在这里插入图片描述
自己人工翻译了下 大致意思就是可以共享

不敢相信自己的眼睛,实操试一下吧
在这里插入图片描述
在这里插入图片描述

因此自己确定的 cookie信息确实可以共享。

so easy ? ! no

再次浏览一些学习文件中发现:
在这里插入图片描述
因此准确的回答是:

对于 localhost:3000 和 localhost:5000, 它们都是在 localhost 域下, 但是端口不同。

根据 HTTP cookie 的规范, cookie 是不包含端口信息的, 这意味着它们的域是相同的。

因此理论上, 如果没有明确指定 Domain 和 Path 属性, 那么在 localhost 下的不同端口可以访问相同的 cookie。

然而浏览器的具体实现可能会有所不同, 一些浏览器可能会隔离不同端口的 cookie, 作为一种安全措施。

因此即使标准规定 cookie 应该在相同域名下共享, 不同端口之间的 cookie 共享在实践中可能并不总是可行的。

如果你希望确保 localhost:3000 和 localhost:5000 能够共享cookie, 你应该在设置 cookie 时指定 Domain 属性为 localhost (或省略, 因为默认情况下cookie会被设置到当前文档的域名), 并且确保 Path 属性设置为 /, 这样无论端口号是多少, cookie 都会被发送到 localhost 下的所有请求中。

例如, 在设置 cookie 时, 服务器应该发送类似以下的HTTP头部:

Set-Cookie: name=value; Path=/; Domain=localhost; HttpOnly

这样设置后, 只要浏览器允许, localhost 下的任何端口都可以访问这个 cookie。但是出于安全考虑, 开发者应该谨慎地共享 cookie, 特别是在涉及敏感数据时。

结束学习 。期待下次,刷新知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值