前两天在 实现基于 ASP.NET Forms 身份验证的跨子域单点登录 一文中提到利用 cookie 支持跨子域 domain 特性来实现单点登录,今天忽然想假如不是缺省端口 80 呢?比如 8080,cookie 能跨端口?经测试,http cookie 是没有端口限制的,站点 http://news.ssolab01.leoworks.net:8080 与 http://passport.ssolab01.leoworks.net 之间是可以共享 cookie 的。 另外可以像 domain 一样指定 IP 分段共享吗?仔细读完 Cookie set to IP number? 看来这应该是不可能的,主要是安全原因。设想下假如可以通过 cookie.domain = .123.254,那岂不所有 *.*.123.254 的站点都可以共享 cookie 了? 此外,经测试对于 localhost 或者只有机器名(即netbios),不要显示设置 cookie 的 domain,否则 cookie 不会存储在客户端浏览器中。 查下 .NET 类库,ASP.NET HttpCookie 也没有与 Port 和 IP 相关的属性?不过 System.Net.Cookie 倒有一个 Port 属性。