当前位置: 首页 > news >正文

使用js操作cookie和浏览器关闭时删除指定cookie

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前几天在项目中需要在浏览器关闭时删掉指定的cookie,但当时一时钻入死胡同了,只想着在浏览器关闭时使用js中的onunload或onbeforeunload事件来删除。但当时试了很多种方法,怎么都没法删掉这个cookie。以下为js操作cookie的代码。(摘自网上)

//取得项名称为offset的cookie值 
function GetCookieVal (offset)
{
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
    endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}
  
//取得名称为name的cookie值 
function GetCookie (name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen)
    {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
        return GetCookieVal (j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return null;
}
  
//删除名称为name的Cookie
function DeleteCookie (name) 
{   
    var exp = new Date();
    exp.setTime (exp.getTime() - 1);
    var cval = GetCookie (name);
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
  
//清除COOKIE
function ClearCookies()
{
    if(confirm('你确定要清空所有COOKIE吗?'))
    {
        var temp=document.cookie.split(";");
        var ts;
        for (var i=0;;i++)
        {
            if(!temp[i])break;
            ts=temp[i].split("=")[0];
            DeleteCookie(ts);
        }
        alert('COOKIE已清除!');
    }
}

后来才猛然想起,如果我在后台添加cookie到响应头时,就不指定过期时间,那么这个cookie就是一个会话型cookie,当浏览器关闭时,这个cookie就会被浏览器自动删除。

但当时我就想不明白为什么使用js删除就不行,于是就跑到网上去问。终于有大神给出了答案,原来在后台添加cookie时,设置了cookie的HttpOnly属性为true,这样当前cookie就不能通过客户端浏览器的脚本来访问。我后来自己去试了一下,果然如此。当然js删除cookie失败的可能原因并不只于此,具体参考以下博文:http://www.cnblogs.com/gossip/archive/2011/12/06/2278282.html

转载于:https://my.oschina.net/u/1756499/blog/295142

相关文章:

  • 解决HTML5中placeholder属性兼容性的JQuery插件
  • C# 集合
  • WPF中查找控件的扩展类
  • 获取IP和mac地址
  • OSPF ProcessID(进程号)详解
  • D3js技术文档 可视化展现
  • 推荐一本HTML5实例书,小白也看得会的《HTML5网页开发实例详解》
  • 使用apache bench(ab)压力测试
  • 编写高性能Web应用程序的10个技巧
  • java使用httpcomponents发送get请求
  • 比较大气的网页元素
  • oracle sql developer 无法启动的解决办法
  • RobotFrameWork(四)变量运算与Evaluate
  • vds与vcenter
  • wxPython Bind key events
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Elasticsearch 参考指南(升级前重新索引)
  • pdf文件如何在线转换为jpg图片
  • Quartz初级教程
  • React的组件模式
  • Spring Boot MyBatis配置多种数据库
  • text-decoration与color属性
  • Vue官网教程学习过程中值得记录的一些事情
  • 包装类对象
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 工作手记之html2canvas使用概述
  • 聊聊flink的BlobWriter
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 用 Swift 编写面向协议的视图
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 智能合约Solidity教程-事件和日志(一)
  • No resource identifier found for attribute,RxJava之zip操作符
  • 白色的风信子
  • 函数计算新功能-----支持C#函数
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #etcd#安装时出错
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (07)Hive——窗口函数详解
  • (5)STL算法之复制
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (理论篇)httpmoudle和httphandler一览
  • (利用IDEA+Maven)定制属于自己的jar包
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (全注解开发)学习Spring-MVC的第三天
  • (转)jdk与jre的区别
  • (转)Windows2003安全设置/维护
  • (转)负载均衡,回话保持,cookie
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化