对cookie和子cookie操作的封装
1 /**2 * 封装cookie的操作3 * @type {Object}4 */5 var CookieUtil = {6 /**7 * 根据cookie的名字获取相应的值8 * @param name cookie名字9 * @return {*}10 */11 get:function (name) {12 //对name进行URL编码13 var cookieName = encodeURIComponent(name) + '=',14 cookieStart = document.cookie.indexOf(cookieName),15 cookieValue = null;16 //找到cookieName17 if (cookieStart > -1) {18 //以cookieStart为起点找到最近的";"19 var cookieEnd = document.cookie.indexOf(';', cookieStart);20 //没找到";",则是document.cookie的最后一个值21 if (cookieEnd === -1) {22 cookieEnd = document.cookie.length;23 }24 //提取相应value字段25 cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));26 }27 //返回28 return cookieValue;29 },30 /**31 * 设置一个cookie32 * @param name cookie名字33 * @param value 相应的值34 * @param expire 生存周期 Date35 * @param path 路径36 * @param domain 域名37 * @param secure Boolean38 */39 set:function (name, value, expire, path, domain, secure) {40 //必须先进行URL编码41 var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);42 if (expire instanceof Date) {43 //toGMTString()方法正确格式化Date对象44 cookieText += '; expire=' + expire.toGMTString();45 }46 if (path) {47 cookieText += '; path=' + path;48 }49 if (domain) {50 cookieText += '; domain=' + domain;51 }52 if (secure) {53 cookieText += '; secure';54 }55 document.cookie = cookieText;56 },57 /**58 * 删除cookie59 * @param name60 * @param path61 * @param domain62 * @param secure63 */64 unset:function (name, path, domain, secure) {65 this.set(name, '', new Date(0), path, domain, secure);66 }67 };68 /*69 //set cookies70 CookieUtil.set(“name”, “Nicholas”);71 CookieUtil.set(“book”, “Professional JavaScript”);72 //read the values73 alert(CookieUtil.get(“name”)); //”Nicholas”74 alert(CookieUtil.get(“book”)); //”Professional JavaScript”75 //remove the cookies76 CookieUtil.unset(“name”);77 CookieUtil.unset(“book”);78 //set a cookie with path, domain, and expiration date79 CookieUtil.set(“name”, “Nicholas”, “/books/projs/”, “www.wrox.com”,80 new Date(“January 1, 2010”));81 //delete that same cookie82 CookieUtil.unset(“name”, “/books/projs/”, “www.wrox.com”);83 //set a secure cookie84 CookieUtil.set(“name”, “Nicholas”, null, null, null, true);85 */86 87 //子cookie的操作88 //为了绕开浏览器的单域名下的cookie数限制89 //子cookie是存放在单个cookie中的更小段的数据90 var SubCookieUtil = {91 /**92 * 获取单个子cookie的值93 * @param name cookie名称94 * @param subName 子cookie名称95 * @return {*}96 */97 get:function (name, subName) {98 var subCookies = this.getAll(name);99 if (subCookies) { 100 return subCookies(subName); 101 } else { 102 return null; 103 } 104 }, 105 /** 106 * 获取所有子cookie并将它们放入一个对象中返回 107 * @param name cookie名称 108 * @return {*} 返回对象或null 109 */ 110 getAll:function (name) { 111 var cookieName = encodeURIComponent(name) + "=", 112 cookieStart = document.cookie.indexOf(cookieName), 113 cookieValue = null, 114 result = {}; 115 if (cookieStart > -1) { 116 var cookieEnd = document.cookie.indexOf(";", cookieName); 117 if (cookieEnd === -1) { 118 cookieEnd = document.cookie.length; 119 } 120 //没有进行解码,因为要对子cookie分离操作 121 cookieValue = document.cookie.substring(cookieStart + cookieName.length, cookieEnd); 122 // 123 if (cookieValue.length > 0) { 124 //分离出子cookie的对象 125 var subCookies = cookieValue.split("&"); 126 //遍历分隔出子cookie的名称和值,解码后返回对象 127 for (var i = 0, len = subCookies.length; i < len; i++) { 128 var parts = subCookies[i].split("="); 129 result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]); 130 } 131 return result; 132 } 133 } 134 //没找到,返回空 135 return null; 136 }, 137 /** 138 * 存储单个子cookie 139 * @param name cookie名称 140 * @param subName 子cookie名称 141 * @param value 子cookie值 142 * @param expires 失效日期 143 * @param path 路径 144 * @param domain 域名 145 * @param secure Boolean安全作用域 146 */ 147 set:function (name, subName, value, expires, path, domain, secure) { 148 //获取name名称的所有子cookie,没有则创建空对象 149 var subcookies = this.getAll(name) || {}; 150 //给对象添加属性和值 151 subcookies[subName] = value; 152 //调用setAll()方法 153 this.setAll(name, subcookies, expires, path, domain, secure); 154 }, 155 /** 156 * 存储所有子cookie 157 * @param name cookie名称 158 * @param subcookies 子cookie名称 159 * @param expires 失效日期 160 * @param path 路径 161 * @param domain 域名 162 * @param secure Boolean安全作用域 163 */ 164 setAll:function (name, subcookies, expires, path, domain, secure) { 165 var cookieText = encodeURIComponent(name) + "="; 166 //创建数组,用于保存子cookie 167 var subcookieParts = []; 168 //遍历对象属性 169 for (var subName in subcookies) { 170 //如果存在,则把编码后的名称和值保存到数组 171 if (subName.length > 0 && subcookies.hasOwnProperty(subName)) { 172 subcookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subcookies[subName])); 173 } 174 } 175 //存在子cookie 176 if (subcookieParts.length > 0) { 177 //连接子cookie 178 cookieText += subcookieParts.join("& "); 179 if (expires instanceof Date) { 180 cookieText += ";expires=" + expires.toGMTString(); 181 } 182 if (path) { 183 cookieText += ";path=" + path; 184 } 185 if (domain) { 186 cookieText += ";domain=" + domain; 187 } 188 if (secure) { 189 cookieText += ";secure"; 190 } 191 } else { 192 //相当于删除cookie操作 193 cookieText += ";expires=" + (new Date(0)).toGMTString(); 194 } 195 document.cookie = cookieText; 196 }, 197 /** 198 * 删除单个子cookie的名称和值 199 * @param name 200 * @param subName 201 * @param path 202 * @param domain 203 * @param secure 204 */ 205 unset:function (name, subName, path, domain, secure) { 206 var subcookies = this.getAll(name); 207 if (subcookies) { 208 //删除对应的属性和值 209 delete subcookies[subName]; 210 //重新设置cookie 211 this.setAll(name, subcookies, null, path, domain, secure); 212 } 213 }, 214 /** 215 * 删除所有子cookie 216 * @param name 217 * @param path 218 * @param domain 219 * @param secure 220 */ 221 unsetAll:function (name, path, domain, secure) { 222 this.setAll(name, null, new Date(0), path, domain, secure); 223 } 224 }; 225 /* 226 //assume document.cookie=data=name=Nicholas&book=Professional%20JavaScript 227 //get all subcookies 228 var data = SubCookieUtil.getAll(“data”); 229 alert(data.name); //”Nicholas” 230 alert(data.book); //”Professional JavaScript” 231 //get subcookies individually 232 alert(SubCookieUtil.get(“data”, “name”)); //”Nicholas” 233 alert(SubCookieUtil.get(“data”, “book”)); //”Professional JavaScript” 234 235 //assume document.cookie=data=name=Nicholas&book=Professional%20JavaScript 236 //set two subcookies 237 SubCookieUtil.set(“data”, “name”, “Nicholas”); 238 SubCookieUtil.set(“data”, “book”, “Professional JavaScript”); 239 //set all subcookies with expiration date 240 SubCookieUtil.setAll(“data”, { name: “Nicholas”, book: “Professional JavaScript” }, 241 new Date(“January 1, 2010”)); 242 //change the value of name and change expiration date for cookie 243 SubCookieUtil.set(“data”, “name”, “Michael”, new Date(“February 1, 2010”)); 244 245 //just remove the “name” subcookie 246 SubCookieUtil.unset(“data”, “name”); 247 //remove the entire cookie 248 SubCookieUtil.unsetAll(“data”); 249 */
转载于:https://www.cnblogs.com/webFrontDev/archive/2012/11/24/2786022.html
对cookie和子cookie操作的封装相关推荐
- 微信公众号删除cookie失败,cookie设置了过期时间不管用,微信公众号cookie比较诡异,删不掉,解决办法,原生JS封装cookie统一操作删除cookie,读取cookie,删除cookie
公司有个项目,需求是这样的: pc 端的项目,有一个步骤可以在手机上操作,页面都在同一个域名下面,但是pc端需要登录(用到了 cookie ),公众号端不需要登录(不用 cookie ) ,不清楚服务 ...
- android 字符串数组去重,GitHub - deng-ming-hao/ec-do: 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等。...
ec-do 自己封装的常用操作实例 实例为日常开发常用的小实例,包括数组去重,打乱数组,字母大小写转换,cookie操作的封装等. 使用方法 引入ec-do.js //去除空格 ecDo.trim(' ...
- Java管理Cookie增删改查操作
Cookie属性 了解这几个属性之后,就知道如何进行Cookie的操作了. name Cookie的名称. value Cookie的值. maxAge Cookie的失效时间,有以下几种值,默认为- ...
- php 置cookie,另:(Cookie.php)cookie操作
[TOC] * * * * * ## 1 Cookie文件源代码(thinkphp/library/think/Cookie.php) ~~~ protected static $config = [ ...
- java修改cookie的值_Java管理Cookie增删改查操作。
Cookie属性 了解这几个属性之后,就知道如何进行Cookie的操作了. name Cookie的名称. value Cookie的值. maxAge Cookie的失效时间,有以下几种值,默认为- ...
- 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!
什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...
- java删除一级域名下cookie_java操作cookie示例(删除cookie)
1.设置Cookie 代码如下: Cookie cookie = new Cookie("key", "value"); cookie.setMaxAge(60 ...
- cookie写_cookie-parser读操作
给页面发送/写cookie 是服务器做的事,所以是res.cookie("name","value") 写,发送cookie res.cookie(" ...
- Java操作Cookie之添加Cookie
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
最新文章
- python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块
- db2查询字段备注_通过逐浪数据精灵管理sqlserver数据表备注以及字段说明
- 《信号检测与处理》的学习
- 调查预测:云部署将于2018年中迎来小高峰
- Codeup-问题 A: 【字符串】最长回文子串
- 小米拒绝权限_小米手机MIUI12真有那么好吗?
- 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
- 性能强悍的开源关系数据库PostgreSQL
- oracle join(比较全面的解释了join)
- Magnification API-Windows放大镜
- Linux使用PulseAudio设置音频card的默认profile
- android 屏蔽电源键,home键
- 全国绿地空间暴露数据集
- fat32 linux 打包工具_自己封装系统(雨林木风一键系统封装工具V3.65)
- 怎么选择Java培训机构?
- vue进阶04-vue文档生成工具vuepress2
- 利用pygame模块设计一个植物大战僵尸游戏初版设定
- 2021 年8月份最新数据库排行榜出炉
- 《数据结构课程设计》实验报告
- android8 Camera2 从 CameraService 到 HAL Service