跨二级域名的cookie和普通的cookie有什么不同

来源:互联网 发布:linux gtk 编程 编辑:程序博客网 时间:2024/05/29 05:00
跨二级域名的cookie需要设置以下属性:
(surance原创,请保留出处: http://www.fltek.com.cn)

  HttpCookie   cookie   =   new   HttpCookie("User");  
  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配置好,页面简单调用一下即可。


另外,如果需要实现桌面软件登陆(例如旺旺可以给淘宝网页登陆),可以参考下文
http://blog.csdn.net/thinker28754/archive/2007/12/26/1968539.aspx
参考文献:
http://content.websitegear.com/article/subdomain_tips.htm
原创粉丝点击