zoukankan      html  css  js  c++  java
  • 项目实施中不可小觑之:cookies作用域

    还记得前年在一次项目中被cookies的作用域害的挺惨,那一次整整花了2天才找到这个问题,事情大概是这样的:

    事故发生的一个月前,我们将项目开发完毕,然后部署上线,当时客户只有一个域名(化名为:www.abc.cn),所以一开始并没有对会员登录的cookies配置作用域;

    事故发生的前一晚,客户打电话给我,说是他们自己开发了一个IM系统,部署在im.abc.cn,想要共享读www.abc.cn的会员cookies,于是我们把cookies作用域改为了".abc.cn",这样一来只要是以abc.cn为根域的应用就都能读到这个cookies值了,一切都按照理论上的可行方案进行着。

    当我们在本地模拟测试通过后,当天下班后,我们将服务器上的cookies作用域修改成了".abc.cn"。可谁知道第二天客户凌晨9点就打电话过来说:今天上午已经有数位使用者打电话过来反映说,会员一登陆就自动退出。我们迅速的派了好几个人,使用IE  FireFox  Chrome  遨游等各大主流浏览器来测试这个问题,却怎么也没能还原故障。而客户说这问题肯定是存在着的,之后我们被迫又把cookies域设置为空,先让网站正常运营。

    同时我们几个研发围坐在一起,把思路理了一下,仍然没能找出一丝端倪(因为通常情况是先要模拟故障现场再分析问题的)。

    下班回家后,我冷静的坐在电脑前,把项目部署在本地,然后先不配置cookies,跑一次会员登录流程(userid为1),然后cookies域改为.abc.cn后再跑一次,还是没发现问题,然后重新注册一个用户会再登陆(userid为4)~~~~~~此时故障重现了。

    ~~~~

    ~~~~

    ~~~~

    ~~~~

    通过F12调试工具发现:原来有2个cookies的userid:一个是1,在www.abc.cn下;而一个是4,在.abc.cn下。我顿时明白了些什么…………

    总结:

    1、当cookies作用域为空时,默认就是当前域名www.abc.cn

    2、当cookies作用域改为.abc.cn后,它无法再去改写www.abc.cn下的同名cookies,写入的信息都存放在domain为.abc.cn下,而读cookies的时候因为不能设置作用域,所以优先读到了www.abc.cn下的值,最后就出现读、写不同步的现象(也就是一登陆就强行退出的故障)

  • 相关阅读:
    C# 特性(Attribute)学习
    ASP.NET Request.MapPath() 与 Server.MapPath()
    Asp.net对http request 处理的全过程!
    保存网址
    寻找silverlight高手帮忙解决问题,谢谢,
    基于.Net Framework的N层分布式应用开发
    VB.NET 代码转为C#
    刚刚开通博客噢 。欢迎大家光临啊
    配置本地服务器的几种方式
    前端必备工具 (记录)
  • 原文地址:https://www.cnblogs.com/jumbotcms/p/3938502.html
Copyright © 2011-2022 走看看