有没有办法设置一个cookie 不是 在子域上可读?换句话说,让 cookie 可用 domain.com, , 但 不是 www.domain.com 或者 xyz.domain.com.

//this is what i'm "intending"...
setcookie($name,$value,$expires,'/','domain.com');
//however, this is how it behaves:
setcookie($name,$value,$expires,'/','.domain.com');

推理:我正在子域上设置静态 CDN,并且不希望用户会话 cookie 来回处理每个图像、css 文件、js 文件等。

...我是否必须重新使用 www.domain.com 对于我的网站?有什么解决方法吗?

有帮助吗?

解决方案

显然,在“domain.com”上有一个与“*.domain.com”匹配的 cookie 是预期的行为。

例如 : 持久客户端状态 HTTP COOKIE 状态 (我的一些强调) :

domain=DOMAIN_NAME

在搜索cookie列表中以获取有效的cookie时,用cookie的域属性进行比较是用互联网域名进行的主机名,从中获取URL。...
“尾部匹配”是指域属性与主机的完全合格域名的尾部相匹配。 “ acme.com”的域属性将匹配主机名为“ anvil.acme.com”以及“ shipping.crate.acme.com”.

只有指定域中的主机才能为域设置cookie,域必须具有 至少两个(2)或三(3)个周期 在其中防止形式的域:“ .com”,“ .edu”和“ va.us”。在下面列出的七个特殊顶级域之一中失败的任何域都只需要两个时期。任何其他域都需要至少三个。七个特殊顶级域是:“ com”,“ edu”,“ net”,“ org”,“ gov”,“ mil”和“ int”。

所以,你要么必须:

  • 使用 ”www.domain.com“对于您的网站
  • 或者为您的静态内容使用完全不同的域名(例如“.anotherdomain.com")
    • 例如,这是 stackoverflow 上所做的:静态内容由 sstatic.net 提供

其他提示

这就是为什么很多站点(包括这个站点)注册一个专用域用作CDN的原因。

由于Cookie域与域名尾部匹配,因此无法实现。你必须使用www。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top