前言

平时很少操作cookie, 对cookie这块有一定的误区, 所以现在来好好学习一下cookie, 其实之前还是看多比较多的关于cookie的文章, 也有觉得好的, 但是感觉还是差了点东西吗但是看了《javaScript权威之南》之后, 就感觉明确多了。

背景

其实关于cookie最早是设计为被服务器所用的, 从最底层来看, 作为http协议的一种扩展实现它。 cookie数据会自动在web浏览器和服务器之间传输, 因此服务器脚本就可以读写存储在客户端的cookie值。

结果cookie在之间就被滥用为客户端存储数据的作用。 虽然这样大好, 但是还是需要来说说客户端怎样实现cookie的操作的(增删查改)。

javaScript操作cookie

  1. 获取cookie
    cookie可以通过Document对象的cookie属性来获取。但是只能获取能获取到的全部cookie(如果cookie有httponly, 就不能获取到)。 所以如果想要单独获取某一个cookie的值, 就需要处理所有cookie的字符串, 然后得到某一个cookie的值。
  2. 增加cookie
    使用document.cookie = “key=value”这样就可以成功的存入一个cookie值, 我们应该知道cookie是有其他属性的, 例如:访问路径, 有效时间等。 那么该怎样设置呢?由于cookie的名?值中的值是不允许包含分号, 逗号,和空白符, 因为不能简答的使用document.cookie = “key=value;path=path;max-age=number”;, 如果这做, 会相当于key=value。因此,在存储前一般可以采用javaScript核心的全局函数encodeURIComponent()对其编码。 例如:document.cookie=”key=”+encodeURIComponent(value)+”;max-age=number;path=path”;这样就可以设置key并且设置它的属性值。
  3. 删除一个cookie
    删除cookie需要通过设置有效时间来完成。例如需要删除key这个cookie,那么需要设置cookie的max-age = 0; 来完成。
    4 . 改变一个cookie
    只需要重新设置一个相同的cookie名覆盖即可, 同时需要赋予其他属性。

以上便是cookie的增删查改的思路, 以下是具体的代码实现

//获取cookie的对象表示。
var getCookie = function(){var cookie = {}var all = document.cookieif(all = ""){return cookie}var list = all.split("; ")for(var i = 0; i < list.length; i++){var cookie = list[i]var p = cookie.indexOf("=")var name = cookie.substring(0, p)var value = cookie.substring(p+1)value = decodeURIComponent(value)cookie[name] = value}return cookie
}//保存cookie值
var setCookie = function(name, value, expiretion){var cookie = name+"="+encodeURIComponent(val)if(expiretion){cookie+=";max-age="+expiretion}document.cookie = cookie
}//删除cookie;如果该cookie不存在也没有影响
var deleteCookie = function(name){var cookie = getCookie()document.cookie = name +"= "+encodeURIComponent("")+";max-age=0";
}
//改一个cookie 无法获取原来的cookie的属性 , 所以需要自己确定其他属性。例如max-age。否则改了的cookie将会是无效var updataCookie = function(name,newValue, maxAge){document.cookie = name+"="+encodeURIComponent(newValue)+";max-age="+maxAge;
}

结尾

没有

久久都不明白的cookie相关推荐

  1. 如果把线程当作一个人来对待,所有问题都瞬间明白了

    来源:公众号[编程新说] 多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白. 强烈建议去运行下文章中的示例代码,自己体会下. 问题究竟出在哪里? 一个线程执行,固然是安全 ...

  2. 第三十六期:如果把线程当作一个人来对待,所有问题都瞬间明白了

    7月8日 以下文章来源于编程新说 ,作者编程新说李新杰 多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白. 强烈建议去运行下文章中的示例代码,自己体会下. 问题究竟出在哪 ...

  3. python20个常用语法_这20个常规Python语法你都搞明白了吗?

    原标题:这20个常规Python语法你都搞明白了吗? 还没关注? Python简单易学,但又博大精深.许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉.学海无涯 ...

  4. 相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!...

    相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了! 先说图片 X×dpi=点数dot X是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片 ...

  5. python写梦幻西游脚本防封号_梦幻西游:其实大家都很明白,这个类型的辅助脚本是不会被封号的...

    游戏的意义就在于它能够给人带来快乐,如果过多的掺杂其他的东西就失去了其本身的意义,大叫好,我是小三,每天给大家分享游戏中的八卦趣事. 帮派是梦幻中重要的组成部分之一,玩家提升自身的实力必须在帮派中进行 ...

  6. 什么是Cookie?Cookie的特征都有哪些?Cookie如何存储与获取?

    1.什么是cookie? cookie实际上就是一些信息,这些信息以文件的形式存储在客户端计算机上.当用户访问了某个网站,可以通过cookie向访问者电脑上存储数据. 比如:自动登录 用户名 2.创建 ...

  7. 每一个人都应该明白的ChatGPT所带来的意义

    每一个人都应该明白的ChatGPT所带来的意义 ChatGPT的横空问世,因其更高的智能程度.更宽泛的领域知识.更灵活的响应能力.更自然的对话语境使整个互联网都受到极大的冲击. 我本人试用了一段时间后 ...

  8. 终于有人把数据、信息、算法、统计、概率和数据挖掘都讲明白了!

    插画设计:万娟 01 什么是数据 数据是什么?这几乎成为一个我们熟视无睹的问题. 有不少朋友脑子里可能会直接冒出一个词"数字"--"数字就是数据",我相信会有一 ...

  9. c++函数为什么带imp_二次函数含参最值问题,老师怎么讲学生都不明白,试试这九张动图...

    "一入函数深似海,从此数学是路人" 很多同学都有这样的感觉.问:数学是从什么开始听不懂了?答:学函数的时候.函数问题作为中学阶段数学重要的知识点,真的是难倒了很多同学.数学老师也非 ...

最新文章

  1. oracle的自动增长,Oracle实现id自动增长
  2. python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)
  3. Arria10_emif
  4. 安卓Socket处理
  5. 53.Maximum Subarray
  6. 【ASP.NET】登陆成功后如何跳转到上一个页面
  7. 纯前端控件集 WijmoJS 2018V2发布,提供可视化设计器,在React、Vue和Angular中的更易用...
  8. 查看mysql的默认存储引擎信息_如何查看mysql的默认存储引擎
  9. Code a simple telnet client using sockets in python
  10. Eclipse或MyEclipse—在Eclipse或MyEclipse中如何将jar包和相应的源代码关联起来
  11. Atitit View事件分发机制
  12. CDN、SCDN、DCDN是什
  13. linux系统手机助手,手机助手Linux版下载
  14. 1097: 蛇行矩阵
  15. 如何在 CentOS 7 上使用 RoundCube 管理邮箱
  16. [NIPS 2018] Stacked Semantics-Guided Attention Model for Fine-Grained Zero-Shot Learning
  17. 青年志愿者演讲稿范⽂5篇
  18. 前端HTML+CSS学习笔记
  19. NVIDIA Jetson TK1学习与开发——简介(针对嵌入式系统应用释放 GPU 的潜能)
  20. OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭算法(图文并茂+浅显易懂+程序源码)

热门文章

  1. flex 如何设置蒙版(遮罩)
  2. input金额自动转为千分位、小数点后保留两位
  3. vue动态添加/删除dom元素
  4. win98老机子安装linux,Windows 98 安装全过程(转)
  5. 第一篇期刊投稿被拒是一种怎样的体验~
  6. v-model组件使用
  7. 基于STM32的0.96寸OLED显示屏显示数据和滚动显示
  8. 计算机在地理科学中的作用,多媒体在地理教学中作用(精).doc
  9. 互联网医院智慧医院系统
  10. ES 常用查询命令汇总