超详细的Cookie增删改查
1,什么是 Cookie?
Cookie是一些数据, 存储于你电脑上的文本文件中。
当web服务器向浏览器发送web页面时,在连接关闭后,服务端不会记录用户的信息。Cookie的作用就是用于解决如何记录客户端的用户信息。当用户访问web页面时,他的名字可以记录在Cookie中。在该用户下一次访问该页面时,可以在Cookie中读取该用户的访问记录。
- 当浏览器从服务器上请求
web页面时, 属于该页面的Cookie会被添加到该请求中。服务端可以通过这种方式来获取用户的信息。
1.1,存储形式
Cookie以键值对形式存储,如下所示:
userName=pony
1.2,常用属性
| 属性 | 用处 | 默认值 |
|---|---|---|
| Name | 键 | 无 |
| Value | 值 | 无 |
| Domain | 允许访问的域 | 当前域 |
| Path | 允许访问的路径 | 当前路径 |
| Expires / Max-Age | 过期时间 | 关闭页面即清除(Session) |
| Size | 占用字节大小 | 无需设置 |

1.3,大小限制
| 浏览器 | 大小 (KB) | 每个域存储个数限制 |
|---|---|---|
| Firefox | 4 | 无 |
| Safari | 4 | 无 |
| Opera | 4 | 30 |
| IE | 4 | 50 |
| Edge | 4 | 50 |
| Chrome | 4 | 50 |
2,增 or 改Cookie
/**
* 设置cookie
* @param {String} key 键
* @param {String} value 值
* @param {String} expires 过期时间(yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 或 时间戳) => default:页面关闭即过期(Session)
* @param {String} domain 域 => default:当前域
* @param {String} path 路径 => default:/
*/
function setCookie(key, value, expires = '', domain = window.location.hostname, path = '/') {
const time = expires ? new Date(expires) : expires
console.log(time)
const cookie = `${key}=${value}; expires=${time}; domain=${domain}; path=${path}`
document.cookie = cookie
}
调用例子:
setCookie('user', '我是你爸爸', '2022-02-20 16:29:00').
// 或者
setCookie('user', '我是你爸爸', '2022-02-20')
// 或者
const timestamp = new Date('2022-10-01').getTime()
setCookie('user', '我是你爸爸', timestamp)
3,查Cookie
/**
* 获取所有cookie的key
* @return {Array<string>} Cookie键组成的数组
*/
function getAllCookieKey() {
const Cookie = document.cookie
const cookieList = Cookie.split('; ')
return cookieKeyList = cookieList.map(item => {
return item.split('=')[0]
})
}
/**
* 根据cookie的key获取对应的值
* @param {String} key 键
* @return {String} value 值
*/
function cookieKeyGetValue(key) {
const Cookie = document.cookie
const cookieList = Cookie.split('; ')
const cookieKeyList = cookieList.map(item => {
return item.split('=')[0]
})
const index = cookieKeyList.indexOf(key)
return cookieList[index].split('=')[1]
}
4,删Cookie
/**
* 根据key清除cookie
* @param {String} key 键
* @param {String} domain 域 => default:当前域
* @param {String} path 路径 => default:/
*/
function clearCookie(key, domain = window.location.hostname, path = '/') {
const Time = new Date()
Time.setTime(Time.getTime() + -1 * 24 * 60 * 60 * 1000)
const expires = `expires=${Time.toUTCString()}`
document.cookie = `${key}=; ${expires}; path=${path}; domain=${domain}`
}
// 清除所有cookie
function clearAllCookie() {
const cookieKeyList = getAllCookieKey()
for (let key of cookieKeyList) {
clearCookie(key)
}
}
如果看了觉得有帮助的,我是@鹏多多,欢迎 点赞 关注 评论;END
PS:在本页按F12,在console中输入document.querySelectorAll('.diggit')[0].click(),有惊喜哦

公众号
往期文章
- 助你上手Vue3全家桶之Vue-Router4教程
- 助你上手Vue3全家桶之Vue3教程
- 助你上手Vue3全家桶之VueX4教程
- 使用nvm管理node.js版本以及更换npm淘宝镜像源
- 超详细!Vue-Router手把手教程
- vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令
- 微信小程序实现搜索关键词高亮
- 超详细!Vue的九种通信方式
- 超详细!Vuex手把手教程
个人主页
超详细的Cookie增删改查的更多相关文章
- 网络系列之 cookie增删改查(封装)
什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅 ...
- js对cookie增删改查的封装
/** * 获取cookie * @param name * @returns {*} */ function getCookie(name) { var cookieArr = document.c ...
- Java管理Cookie增删改查操作。
Cookie属性 了解这几个属性之后,就知道如何进行Cookie的操作了. name Cookie的名称. value Cookie的值. maxAge Cookie的失效时间,有以下几种值,默认为- ...
- 超详细的DOM操作(增删改查)
操作DOM的核心就是增删改查 原文地址:https://jianshu.com/p/b0aa846f4dcc 目录 一.节点创建型API 1.1 createElement 1.2 createTex ...
- Java web 简单的增删改查程序(超详细)
就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { privat ...
- sqlHelper做增删改查,SQL注入处理,存储值,cookie,session
一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...
- sqlite数据库操作详细介绍 增删改查,游标
sqlite数据库操作详细介绍 增删改查,游标 本文来源于www.ifyao.com禁止转载!www.ifyao.com Source code package com.example ...
- Selenium入门13 cookie的增删改查
cookie的增删改查: 查询:get_cookies()查询所有cookie,get_cookie(cookie的name)获取单个cookie 删除:delete_cookie(cookie的na ...
- SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)
Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...
随机推荐
- SYCOJ157乘二加一
题目-乘二加一 (shiyancang.cn) 递归写法 #include <bits/stdc++.h> using namespace std; string f(int n) { i ...
- 【Java】反射
文章目录 反射 概述 动态语言与非动态语言 动态语言 非动态语言 Java反射机制提供的功能 反射相关的主要API 关于java.lang.Class类的理解 类的加载过程 获取Class的实例的方式 ...
- Solon 开发,二、注入或手动获取Bean
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- 《剑指offer》面试题20. 表示数值的字符串
问题描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100"."5e2"."-123"."3.1 ...
- 【记录一个问题】铁威马nas,噪音太大了,我老婆说在客厅放了一个电饭锅
1.硬盘转动的噪音特别大,而且还是有很大IO的长时间猛转: 2.IO的管理算法,以及做IO的进程,都有很大问题.并未做任何操作,动不动就疯了一样硬盘猛转.
- Android 12(S) 图形显示系统 - 应用建立和SurfaceFlinger的沟通桥梁(三)
1 前言 上一篇文章中我们已经创建了一个Native示例应用,从使用者的角度了解了图形显示系统API的基本使用,从这篇文章开始我们将基于这个示例应用深入图形显示系统API的内部实现逻辑,分析运作流程. ...
- POSIX之共享内存
shm_write.c: #include<stdio.h> #include<stdlib.h> #include <stdlib.h> #include < ...
- 介绍一个golang库:fastcache
学习VictoriaMetrics源码的时候发现,VictoriaMetrics的缓存部分,使用了同一产品下的fastcache.下面分享阅读fastcache源码的的结论: 1.官方介绍 fastc ...
- 手把手教你丨小熊派移植华为 LiteOS-M
摘要:本文详细讲解如何移植 LiteOS 到小熊派. 本文分享自华为云社区<小熊派移植华为 LiteOS-M(基于MDK)>,作者: JeckXu666. 前言 之前使用小熊派实现了鸿蒙动 ...
- python字符串系列--2
#!/usr/bin/python #coding=utf-8 first_name='tiger' last_name='gao' full_name= f"{first_name} {l ...