我正在阅读MDC 条目nsICookieManager2.add
,它讨论了域和非域cookie。这两种 cookie 有什么区别?
3 回答
来自 RFC2109:
如果 [...] A 是 FQDN 字符串并具有 NB 形式,则主机 A 的名称域与主机 B 匹配,其中 N 是非空名称字符串,B 具有 .B' 形式,B' 是 FQDN 字符串. (因此,xycom 域匹配 .y.com 而不是 y.com。)
所以,如果我理解正确的话,域 cookie 有一个域.y.com
,而非域 cookie 有一个域,如x.y.com
. 域 cookie 对所有子域可见,非域 cookie 仅对其特定子域可见。
带有域的 cookie.y.com
在访问像www.y.com
和test.y.com
(但不是y.com
)这样的子域时可见,而带有域的 cookiex.y.com
仅在访问子域x.y.com
而不是任何其他子域时可见。
查看 RFC,如果在创建 cookie 时未指定域,则将应用来自请求主机的域。因此,来自 www.foo.com 的未指定域的请求将在域中包含 www.foo.com。
但是,您可能希望明确设置域以跨各种子域使用 cookie。将 cookie 域设置为 foo.com 将允许您在 www.foo.com 或 help.foo.com 或 *.foo.com 上访问它。在您可能托管的应用程序周围传递一些状态时,这非常有用。
据我了解,非域 cookie 没有任何意义。Cookie 始终与域相关联,只有该域的 cookie 才会传递给应用程序并可以使用。但是,是的,我们可以通过一些技术创建跨域 cookie。这是一个解释这一点的教程。我不知道您是否在项目中使用 php,因为本教程使用 php 解释了这个概念。
http://www.tutorialized.com/view/tutorial/Implementing-Cross-Domain-Cookies/372
希望这可以帮助。