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

解析、理解 cookie

cookie 前后端都可以设置的

了解cookie是一个浏览器的存储空间。它的存储格式是字符串的形式(string=" “),
cookie的每一条数据都是以key=value的形式设置的。
cookie值一次只能设置一个。即语法:document.cookie=” key=value"这个是不带过期时间的
多个cookie的设置就是key1=value1 ;key2=value2…

cookie 的特点

1 按域名存储:哪个域名存储的就只能在这个域名下边用,其他域名不可以。只要域名一样,就可以使用和资源路径没有关系。
2 存储大小受到限制:4kb 大概50条左右的信息量
3 时效性:默认是会话级别的,当关闭浏览器的时候就没有了,注意是浏览器而不是网页。可以手动设置,这就涉及到了一个过期时间,经常见的就是7天免登录的信息。
***eg:在某个网站登录了自己的账号,当你7天内再次打开的时候,***发现信息还在就是用了cookie设置了这个信息。下边会有一个详解。又因为涉及到安全的隐私问题,所以它的信息值是在变化的,保障你的安全性。
4 请求的时候会自动携带:也就是说只要cookie空间里有数据,那请求的时候,有多少带多少。
5 前后端都可以操作的(增 删 改 查)

解析

:也就是设置,因为cookie一次只能设置一次。
document.cookie=‘key=value’// 会话级别,关闭浏览器就会删除。
本质上cookie是不可以删除的,而我们要删除他,就要给cookie设置一个过期时间。
我们所在的地区为东八区。所以时间上,相对于世界时间的标准时向前推送了8个小时,所以就要是现在的时间回退到8小时以前。
加入现在是早上8点,那么你回退8小时,就是凌晨0点的时候
语法:
document.cookie=" key=value;expires="+时间对象
这里的key就是属性名
value就是属性值
expires就是时间期限,也就是过期时间
解析:
先得到现在的时间time:
let time=new Date()//当前时间对象
(getTime()时间对象的时间戳。setTime()根据时间戳设置时间)
time.setTime(time.getTime()-10006060*8-1000)
这个意思就是 当前时间 根据时间戳设置时间,里面的时间是一个时间对象得到现在时间的时间回退到8小时以前的前一秒,也就是在你设置的那一秒已经过期了。
以为cookie的值一次只能设置一个,也就是说,当你在设置相同的属性名的时候就应经给替换改变 了,即 document.cookie=‘a=100’;document.cookie=‘a=200’.此时打印的一下aj就是200, console.log(a)
获取cookie,直接打印cookie就可以了,有多少就会打印出来多少。
console.log(document.cookie).会拿到所有的cookie值。如果想要单独拿到某个cookie值就要进行转化了。因为cookie的存储格式是字符换,哪里就要转化成数组。
**

封装cookie的操作,可以用一下

setCookie方法是设置
getCookie方法是获取

先说设置cookie
这里他接受三个参数,应该可以看得懂的吧,key就是你将要设置的属性名,value就是属性值,expires就是过期时间,这个过期时间看你的需要,可以最后不传,但可以设置上,以防后期调用的时候忘记

function setCookie(key,value,expires){
这里的操作跟上边的设置过期时间一样,只不过是把它放到了if判断里面
if(expires){
var time =new Date()
time.setTime(time.getTome()-100060608+1000expires)
document.cookie=key+“=”+value+“;expires=”+time
这里采用的是拼接字符串的方式。
}else{
document.cookie=key+"="+value
}
}
自己传参验证
setcookie(“key”,“value”,expires)=>(a,100,10)就是当前时间的10秒以后过期,不设置expires就是默认8小时前的时间对象。

获取cookie
这里传一个参数key就可以了,上边已经设置过参数,我们获取cookie就是通过属性名来获取的
function getCookie(key){
因为cookie是字符串的形式存储的所以我们要
var str=’ ’
然后把它分割成数组的形式,在数组中用split方法分割
var tmp =document.cookie.split(";")
for循环后者foreach 的方法去遍历他
tmp.forEach(function(item){//这里的item就是每一条cookie
打印一下,看看结果console.log(item)
var t=item.split("=")
判断他的索引是不是等于key
if(t[0]===key){
str=t[1]
}
})
返回这个 str
return str
}
var res=getCookie(key)//传递一个你要获取的key名。
console.log(res)

相关文章:

  • 04-Windows频繁打开和关闭端口可能引发的问题 | 07.杂项
  • ajax的简单了解,适合刚进门 的,注释相对比较详细
  • Android——shape和selector和layer-list的(详细说明 转)
  • ajax的兼容问题
  • 对象管理器(defineProperty)学习笔记
  • ajax的登录页面,发送post方式
  • AHK 中 = 和 == 等比较运算符的用法
  • nodejs的简单分析理解
  • NPM的操作步骤
  • Zabbix监控Windows主机
  • promise解决回调地狱的方法之一
  • HTML5的兼容性测试
  • 为了Cisco UC,36年来家中第一次安装固话
  • 链式调用和解决回调地狱的终极解决方法async,await
  • jquery的使用
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • java8-模拟hadoop
  • Java精华积累:初学者都应该搞懂的问题
  • js递归,无限分级树形折叠菜单
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Web设计流程优化:网页效果图设计新思路
  • Zepto.js源码学习之二
  • 大数据与云计算学习:数据分析(二)
  • 读懂package.json -- 依赖管理
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 什么是Javascript函数节流?
  • 听说你叫Java(二)–Servlet请求
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #{} 和 ${}区别
  • #单片机(TB6600驱动42步进电机)
  • (20050108)又读《平凡的世界》
  • (26)4.7 字符函数和字符串函数
  • (day6) 319. 灯泡开关
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (算法)求1到1亿间的质数或素数
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net Stream篇(六)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ::before和::after 常见的用法
  • @html.ActionLink的几种参数格式
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [codeforces]Checkpoints