昨天碰到一个问题,在IE8下无法正常将一组数据保存到cookie,从cookie读取到的值总是空值而不是写入的值。在firefox和chrome下是正常工作的。
借助fiddler,通过观察请求发现IE8下有两个key值一抹一样而value不同的Cookie,在firefox和chrome中只有一份。后面同事对Cookie仔细分析发现IE8中两个key一样的cookie他们的domain是不同的(注意:该应用有两个域名:其中一个为a.b.com另一个为b.com),这两个Cookie正好是这两个域名下的同keyCookie。也就是父域名和子域名有两个key一样的cookie。设置该Cookie是通过我们公司的框架去做的:Cookie作用域为当前域名,path为/。在IE下 如果首先通过父域名访问过设置Cookie的逻辑,再通过子域名访问就会出现读不到想要的Cookie的情形。这里暂且不讨论IE浏览器跟其他浏览器对这种情况处理的差别。
问题的根本原因是:域名的语义是什么?父域名和子域名到底是什么关系?
一个应用拥有两个不同级别的域名,从语义上看就比较别扭。就好像父亲儿子是同一个人一样,身份有点混淆。