做开发时会时不时的用到cookie来保存数据,比如常见的登录页面的username和password,那么html页面中怎么去操作cookie呢?

设置与获取cookie

其实最简单的对cookie的操作就是document.cookie='username=TestUser'(设置cookie),取值时用document.cookie(获取cookie)就可以了

<button onclick="document.cookie='username=kkkkk'">创建cookie1</button>
<button onclick="document.cookie='age=12'">创建cookie2</button>
<button onclick="alert(document.cookie)">显示cookie</button>

设置cookie时的参数

- cookie的name和value,实际上就是一个字符串,例如:username='kk'
- ;path:可以获取到此cookie的路径,例如:"/"、"/dir"
- ;domain:域名 默认为当前文档位置的路径的域名部分。例如:"test.com"、"blog.csdn.net"
- ; expires:cookie的过期时间,如果不定义则cookie在会话结束(关闭网页)时失效,需要GMT格式,可以使用toGMTString()函数来做格式化,例如:new Date().toGMTString();
- ;secure :cookie是否只通过https协议传输

注意

这里有一点需要注意的是,在测试的时候发现谷歌浏览器、新版的Microsoft Edge、QQ浏览器,在打开本地html文件的时候无法获取cookie,能不能储存我没有去深究,但不能获取就是有问题了,上网找了一下,好像是需要部署到服务器或者使用开发工具打开,让它具有一个服务器环境才行,Firefox可以直接使用,上述代码就是在Firefox中测试的。

修改cookie

修改cookie其实只要重新赋值就可以,或者说重新创建名字相同的cookie就好。

<button onclick="document.cookie='username=kk'">创建cookie1</button>
<button onclick="document.cookie='username=xx'">修改cookie1</button>
<button onclick="alert(document.cookie)">显示cookie</button>

如上所示,在点击修改一次后,再次点击“创建cookie1”时,cookie的值就被再次修改,所以,cookie的创建和修改的方式是相同的。

删除cookie

上面说过cookie是有过期时间的,如果不设置过期时间,则cookie会在会话结束时自动删除,所以同时也说明没有真的永久的cookie,只有相对永久,比如我们把过期时间设置为9999年1月1日,那么相对来说,这就是一个永久的cookie;
删除cookie,只要把cookie的过期时间修改为已经过去的时间,让cookie失效,那么就是删除了cookie;修改上面已经说过,其实就是从新给cookie赋值,那么删除其实也就是同样的道理了,重新赋值并把失效时间设置为已经过去的时间就是删除cookie

<button onclick="document.cookie='username=kk'">创建cookie</button>
<!-- 现在是:2020年2月18日14:15:17 -->
<button onclick="document.cookie='username=kk;expires=Fri, 31 Dec 2019 23:59:59 GMT'">删除cookie</button>
<button onclick="alert(document.cookie)">显示cookie</button>

获取指定的cookie值

在第一个GIF中我们可以看到,当cookie有多个值得时候,获取到的值是用";"连接每个cookie值的字符串,所以,我们完全可以使用var cookieArr = document.cookie.split("; ")来分割获取到的字符串获得字符串数组,然后遍历数组,来得到指定的值;
或者用网上更多的经过简单封装的正则的方式

function getCookie(name){var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");if (arr = document.cookie.match(reg)){return (arr[2]);}else{return null;}
}

Cookie封装

不过,在写这篇文章时,在MDN的技术文档中找到了一个经过封装的cookie方法,可以拿过来直接用,各个参数的解释也都有,不需要自己去摸索了。

/*\
|*|
|*|  :: cookies.js ::
|*|
|*|  A complete cookies reader/writer framework with full unicode support.
|*|
|*|  https://developer.mozilla.org/en-US/docs/DOM/document.cookie
|*|
|*|  This framework is released under the GNU Public License, version 3 or later.
|*|  http://www.gnu.org/licenses/gpl-3.0-standalone.html
|*|
|*|  Syntaxes:
|*|
|*|  * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
|*|  * docCookies.getItem(name)
|*|  * docCookies.removeItem(name[, path], domain)
|*|  * docCookies.hasItem(name)
|*|  * docCookies.keys()
|*|
\*/var docCookies = {getItem: function (sKey) {return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;},setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }var sExpires = "";if (vEnd) {switch (vEnd.constructor) {case Number:sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;break;case String:sExpires = "; expires=" + vEnd;break;case Date:sExpires = "; expires=" + vEnd.toUTCString();break;}}document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");return true;},removeItem: function (sKey, sPath, sDomain) {if (!sKey || !this.hasItem(sKey)) { return false; }document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : "");return true;},hasItem: function (sKey) {return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);},keys: /* optional method: you can safely remove it! */ function () {var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }return aKeys;}
};

方法及参数解释:

html页面怎么保存和读取cookie 推荐MDN封装的cookie方法相关推荐

  1. python读取wps表格文件显示到动态页面中_Python实现读取txt文件并转换为excel的方法示例...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. Cookie获取、保存与读取

    为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓 ...

  3. 通过cookie保存并读取用户登录信息

    浏览器将cookie以key/value的形式保存到客户机的某个指定目录 通过cookie的getCookies()方法可获取所有cookie对象的集合 通过cookie对象的getName()方法可 ...

  4. 通过cookie保存并读取用户登录信息实例

    通过cookie的getCookies()方法可获取所有cookie对象的集合:通过getName()方法可以获取指定的名称的cookie:通过getValue()方法获取到cookie对象的值.另外 ...

  5. php读取cookie文件,PHP读取CURL模拟登录时生成Cookie文件的方法,_PHP教程

    PHP读取CURL模拟登录时生成Cookie文件的方法, 本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法.分享给大家供大家参考.具体实现方法如下: 在使用PHP中的CURL模拟登 ...

  6. javaweb:会话管理和保存会话数据的两种技术(Cookie、Session)

    会话: •会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题? •每个用户与服务器进行交互的过程中,各自 ...

  7. 模型数据的保存和读取

    1,基本内容 目的是将模型数据以文件的形式保存到本地. 使用神经网络模型进行大数据量和复杂模型训练时,训练时间可能会持续增加,此时为避免训练过程出现不可逆的影响,并验证训练效果,可以考虑分段进行,将训 ...

  8. 【OpenCV 4开发详解】保存和读取XML和YMAL文件

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  9. sklearn与pytorch模型的保存与读取

    当我们花了很长时间训练了一个模型,需要用该模型做其他事情(比如迁移学习),或者我们想把自己的机器学习模型分享出去的时候,我们这时候需要将我们的ML模型持久化到硬盘中去. 1.sklearn中模型的保存 ...

最新文章

  1. cacti 添加redis监控(远程服务器)
  2. C语言有三个电阻r1r2r3,[VR虚拟现实]ARM硬件试题库及答案(37页)-原创力文档
  3. php 安装 phpunit,phpunit的安装
  4. [原创] GSM/GPRS 以及CDMA区分以及相关模块选型
  5. 赤虹JSON模块 v1.0 麻雀虽小, 五脏俱全
  6. ​炸裂!万字长文拿下 HTTP 我在字节跳动等你!
  7. 微信公号“架构师之路”学习笔记(五)-数据库扩展性架构设计(水平切分,秒级扩容,平滑迁移,在线表结构变更,一个大数据量多属性高并发的数据库设计等)
  8. bigdecimal 保留两位小数_五年级数学知识点总结-02小数的除法
  9. SaltStack系列(二)之常用模块介绍
  10. r library car_医学统计与R语言:双因素重复测量方差分析(Twoway repeated measures ANOVA)...
  11. 《Metasploit魔鬼训练营》 第二、三章
  12. python response_python修改微信和支付宝步数
  13. 前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
  14. 【数据结构】顺序表实现超详解(保姆级教程)
  15. 京东、京东全球购、考拉等电商平台入驻费用详解
  16. android 加密手机功能,怎么为安卓手机加密
  17. 来自灵魂的拷问——知道什么是SQL执行计划吗?
  18. python交换机ssh巡检_paramiko交换机巡检
  19. python概率编程_Python概率编程库PyMC应用案例二则,pymc应用案例
  20. 血与荣耀(第四章-命令的镣铐)

热门文章

  1. (转)七个受用一生的心理寓言
  2. STM32CUBEMX_SDIO和FATFS_读写SD卡
  3. linux下rename用法--批量重命名
  4. npm node升级到最新版本
  5. 自媒体必备工具:免费的音文对齐生成SRT字幕,快速打轴匹配声音及文字的在线工具
  6. 微信开发者工具字体模糊
  7. 1计算机世界中的时间概念
  8. 金融IT系统高可用运维经验总结—人员、技术、流程
  9. 无线传感网学习笔记(8)—— DSDV路由协议 和 AODV路由协议
  10. c语言编程大体难度较高的,面向初学者的C语言编程方法研究