跨域iframe页面cookie丢失(续)-IE11中Cookie仍然丢失

前篇:使用P3P策略解决IE中iframe、ajax无法读写cookie的问题

前几天解决了在不同域名下iframe中Cookie丢失的问题(解决方案),基本上所有的浏览器在本地测试通过,服务器上的版本更新后也基本上全部测试通过,但却出现了一个新问题:IE11中IFrame仍然出现了.ASPXAUTH(form验证用的cookie)丢失问题,而且丢失的方式很奇怪,其他的cookie存在,就只有这一个丢失了,导致其同域下的页面仍然需要登录,而且登陆后能够做其他操作。

经过百度、谷歌也没找到解决方案,貌似也没人遇到这问题,无奈继续查找,使用F12抓包,发现第一次登陆后.ASPXAUTH是存在的,刷新后就不见了,但一条重要线索出现了,地址中加入了一级目录/F(字母加数字组合的乱码)/,我没有在这里面加入任何目录,也没必要这么加,而且这个似曾相识,与将sessionid存到url中的方式如出一辙,而且对比本地不出错,必定服务器设置有不一致的地方,找到

<authentication mode="Forms">
<forms  protection="All" cookieless="UseCookies" loginUrl="~/Account/Login" timeout="60" />
</authentication>

加上cookieless="UseCookies" ,强制使用cookie存储。

回到入口页面登陆后再打开其他页面,成功登陆,问题解决。

但不知道为何会导致服务器将验证信息放到了地址中,一般只有在客户端浏览器不支持cookie的情况下才可能使用这种方式,而且除了IE11,其他浏览器没有发现这问题,或许IE11更改了某些标识(如:ua),导致服务器决定将验证信息放到了url中。