cookie 的Domain删除失败的问题

  最近接手一个老项目,项目中使用的是cookie来做的处理的,新增的时候cookie添加了域,

但是删除的时候没有添加域,导致删除cookie的时候一直失败!还有cookie的创建与删除,应该都必需经过页面的刷新,或是页面跳过后 才有效..

  而ie删除cookie的时候成功了!如底下的js代码,        

document.execCommand("ClearAuthenticationCache")

试了下,IE下完全正常,如果说这么简单就解决这个问题的话,也太低估我们的浏览器大军了,FireFox和Chrome等非微软系的浏览器根本无视上面的代码,所以只有另辟蹊径了。可以参考:http://wangye.org/blog/archives/874/

<script type="text/javascript">
        function singout() {
            deleteCookie("WEACToken");
            deleteCookie("LtpaToken");
            document.execCommand("ClearAuthenticationCache");
            window.location.href = ‘Login.aspx‘;
        }
        /* 删除Cookie */
        function deleteCookie(name) {
            var expdate = new Date();
            expdate.setTime(expdate.getTime() - 1000);
            setCookie(name, "", expdate);
        }
        /* 设置Cookie */
        function setCookie(name, value) {
            var argv = setCookie.arguments;
            var argc = setCookie.arguments.length;
            var expires = (argc > 2) ? argv[2] : null;
            if (!(expires instanceof Date)) {
                alert(" this expires date is null! ");
                return;
            }
            document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : (";expires=" + expires.toGMTString()));
        }
    </script>

  

  在ie浏览器下cookie删除成功,但是根本就不是 deleteCookie方法的作用,而是 document.execCommand("ClearAuthenticationCache")起的作用,导致一直被误导了;

后面代码的修改:C#

  对于domain的解释:在w3c中没有找到解释,在MSDN中的解释是默认当前域。

  https://msdn.microsoft.com/zh-cn/library/system.web.httpcookie.domain.aspx

  有多个子系统公用了一个域名,假如有两个相同的cookie 名称,那么在一个子系统中删除的cookie时是删除哪一个呢,所以没有添加域名,导致浏览器不指定删除哪一个cookie。(个人解释)

        protected void Page_Load(object sender, EventArgs e)
        {
            //Session.Remove("LoginStatus");
            HttpCookie eacCookie = Request.Cookies[Consts.COOKIE_NAME];
            HttpCookie ltpaCookie = Request.Cookies["LtpaToken"];
            RemoveCookie(eacCookie);
            RemoveCookie(ltpaCookie);
            //string script = "<script>window.close();</script>";
            //ClientScript.RegisterStartupScript(this.GetType(), "logout", script);
            //Response.Redirect("Default.aspx");
        }
        private void RemoveCookie(HttpCookie cookie)
        {
            if (cookie != null)
            {
                HttpContext.Current.Response.Cookies.Remove(cookie.Name);
                cookie.Domain = "." + MCS.SSO.DataAccess.SettingAccess.GetSettingValue("SSODomain");
                cookie.Value = String.Empty;
                cookie.Expires = DateTime.Now.AddDays(-1);
                HttpContext.Current.Response.Cookies.Add(cookie);
            }
        }  

像上面那样处理 cookie删除就成功了!

<script type="text/javascript">
        function singout() {
            //deleteCookie("WEACToken");
            //deleteCookie("LtpaToken");
            //document.execCommand("ClearAuthenticationCache");
            window.location.href = ‘Login.aspx‘;
        }
        /* 删除Cookie */
        function deleteCookie(name) {
            var expdate = new Date();
            expdate.setTime(expdate.getTime() - 1000);
            setCookie(name, "", expdate);
        }
        /* 设置Cookie */
        function setCookie(name, value) {
            var argv = setCookie.arguments;
            var argc = setCookie.arguments.length;
            var expires = (argc > 2) ? argv[2] : null;
            if (!(expires instanceof Date)) {
                alert(" this expires date is null! ");
                return;
            }
            document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : (";expires=" + expires.toGMTString()));
        }
    </script>  

cookie的失效时间设置成功,浏览器清除cookie成功!

时间: 2024-11-09 05:12:12

cookie 的Domain删除失败的问题的相关文章

js与cookie的domain和path之间的关系

1.前言 使用javascript操作cookie我们都经常使用,对cookie不是很了解的话可以看下这篇帖子[javascript操作cookie](http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html "javascript操作cookie"):常用的cookie知识点上面那位大神已经讲完了,有点点小补充顺便说下,不对的地方欢迎吐槽. 2.外部js 做网站经常要引入其他网站的js.一直以来我以为引入的js

$.cookie(&#39;name&#39;, null) 删除cookie 失效问题

这几天在做网站的用户登录和退出功能,我使用jquery.cookie.js来操作cookie,但是用$.cookie('name', null) 总是失效, 后来使用$.cookie("name",null,{path:"/"})  成功删除cookie. 记录备查... $.cookie('name', null) 删除cookie 失效问题

SQL SERVER代理作业删除失败问题

在SQL Server 2005上遇到了先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败. DELETE 语句与 REFERENCE 约束"FK_subplan_job_id"冲突.该冲突发生于数据库"msdb",表"dbo.sysmaintplan_subplans", column 'job_id'. 语句已终止. (Microsoft SQL Server,错误: 547) 与维护计划有关的有三张表: 1.sysmaint

Cookie的Domain

每个Cookie都有常用的几个元素:name.value.expires.domain Cookie的Domain 设置cookies时,可以设置cookie的域名参数domain,标识cookie在特定站点的合法性. 大家知道,cookie是与域名绑定的,如果A站点的cookie,B站点是不能访问的,这是浏览器的同源策略限定,主要是出于安全考虑.但是,如果A站点在设置cookie时,设置了domain参数,那么这个cookie可以在domain指定的域名或子域名的站点使用. 今天帮别人处理了个

关于java中文件删除失败的原因分析

最近在做一个文档管理系统,结果在删除文件的时候,一直提示我文件删除失败,当然啦,是我在jsp里面写的一个alert("文件删除失败!"),然后我就纳闷儿了,为什么删不掉呢?后来打开windows,找到相应的文件,用管理员权限去删除也删不掉!然后就给我报错,java TM...正在使用这个文件,我顿时就凌乱了,因为我使用的是MyEcplise,所以我又回去检查代码,后来终于找到元凶了,是一个警告导致的错误!警告啊!下面我贴上代码: /** * 获取单个文件的大小 * @param fil

EasyUI前台执行删除功能后台返回给前台信息 删除成功/删除失败+错误信息

新建一个类 1 public class JsonResult { 2 private Boolean success = true; 3 private String msg; 4 5 public JsonResult() { 6 } 7 8 public JsonResult(Boolean success, String msg) { 9 this.success = success; 10 this.msg = msg; 11 } 12 ...get/set 13 } Controll

关于前后端写入Cookie时domain的一个问题

1.1. 前端 先假设有如下setCookie方法: function setCookie(name, value, day, path, domain) { day = day || 30; path = path || '/'; var str = name + '=' + value + '; '; if(day) str += 'expires=' + new Date(Date.now() + day * 24 * 3600 * 1000).toGMTString() + '; ';

js学习cookie封装之删除

cookie删除 function remove(){ var now = new Date(); document.cookie = name + '=0;expires=' +now; }

jQuery 操作Cookie 存储 读取 删除等

<script type="text/javascript" src="/UI.Web.CRM.Main/js/jquery-2.1.1.min.js"></script> <script type="text/javascript" src="/UI.Web.CRM.Main/js/jquery.cookie.js"></script> $.cookie('the_cookie