最近遇到一个很有意思的问题,记录一下;
首先第一思路就想到了同源策略和跨域问题,第一感觉是不可共享。
但是在实际操作中却发现可以共享
协议地址: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, 特别是在涉及敏感数据时。
结束学习 。期待下次,刷新知识