跨二级域名的cookie需要设置以下属性:
HttpCookie cookie = new HttpCookie("username"); cookie.Value = "yiyioo"; cookie.Expires = DateTime.Now.AddMinutes(3); cookie.Domain = "test.com"; Response.Cookies.Add(cookie); 重点就是变红的那句,要设置这个domain。只要这样设置后 ,所有的在这个域名下的二级域名都可以访问。
关于cookie的特性Ps两句: cookie只是浏览器附加的一个功能,因此你要写Expires属性,不然会关闭浏览器就过期。(实际是cookie并没有存到硬盘,还是在浏览器的内存中。 cookie过期也不会像session一样,可以触发一个过期事件。因为这个是由浏览器定期删除的,跟服务器端没有关联。 cookie的原理既是浏览器写到硬盘指定地址的一个文本。你可以写任何域名,但是你读取cookie的时候,浏览器是根据你的域名返回cookie给你的。 cookie存在的理由:cookie可以唯一区分一个客户端。目前很多单点登陆解决方案,无法做到的就是“唯一区分客户端”。你用IP、硬盘号、mac区分,其实都不是明智的选择,采用浏览器自带的区分才是最好。比如多Tab如何处理,同台电脑的多个浏览器进程如何处理等。因此还是利用cookie和session。自己用数据库模拟很难的 。
如果多域名是在不同的web服务器上,需要做一些额外的配置。(比如智能解析) 需要配置cookie的密钥。因为cookie是加密的,加密的密钥默认是本机的某个硬件信息。如果换了web服务器,那么这个密钥就不用了,这样加密解密出来的东西也不同了。因此要手工设置一下密钥。
另外,使用asp.net的时候要注意,因为.net framework 1.1 和2.0默认的加密算法不同,因此如果要兼容这2种网站,也需要设置一下。
可以设置web.config的以下节点:(/System.Web/下的节点) <machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="3DES" decryption="3DES" />
如果是.net用户,可以尝试使用这个类: FormsAuthentication 这个类封装了单点登陆,你不需要去关注写cookie要怎么写了,只要在webconfig配置好,页面简单调用一下即可。
中联无限科技公司提供专业的成都网站建设、成都网站设计、成都网站制作、成都网站推广。
上一篇:整理网站外部优化外链的种类
下一篇:什么是动态域名
|