Cookie

说到Cookie,不管作为前端开发人员还是后端开发人员并不陌生,作为一种最古老、最稳定的客户端存储形式,即便是在当下各种新的客户端存储技术层出不穷的时代,它仍旧有其一席之位。Cookie 使用 HTTP header 发送,具体来说是名为“Cookie”的 HTTP header,每次请求的时候都会由浏览器发送到服务器,同时又从服务器发送到浏览器,是一种双向传输的形式。
=== Request Headers ===
......
Cookie: AGL_USER_ID=f695f47d-f643-46cec-bf63-6255asdasdqwe4b3a24
... ......
以前,每个域名最多只能有 20个 Cookie,但如今的浏览器似乎已经去掉了这个限制(浏览器没有限制它可以拥有的 Cookie 数量),但是最佳的实践是每个域名 50个、大小总计 4KB 的 Cookie 是安全的(Cookie过多有可能导致后台服务报错)。
每个Cookie 对应唯一的域名。这也就意味着在A网站域名上设置的 Cookie 值无法在B网站使用。从而在一定程度上保证了网站的安全,毕竟任何人都不希望其它网站影响自己的网站上使用Cookie。 另外Cookie 也可以对应唯一的子域名。例如, map.baidu.com 是 baidu 网站的一个独立的子域名。你可以创建只有map.baidu,com可以读取的 Cookie,也可以创建 www.baidu.com 和 map.baidu.com 都可以读取Cookie
 
1、创建Cookie
 
     Cookie 默认是没有 API的。要使用 Cookie的话,只需要在代码中写入如下代码。即可创建一个 Cookie
1 document.cookie = 'cookname=cookievalue' // 默认设置

     再者。你还可以设置Cookie的过期时间。我们只需要在 Cookie 值后面使用一个分号然后追加一个exprires的关键字等于一个时间即可

document.cookie = 'cookname=cookievalue;expires=Mon Jul 04 2022 16:36:24 GMT' 

    另外还可以进一步扩展,指定该 Cookie 只对某个域名有效,如下,该Cookie只在域名为www.xxx.com的网站中生效。具体还是根据自己项目的需要来设置
 
document.cookie = 'cookname=cookievalue;expires=Mon Jul 04 2022 16:36:24 GMT; domain=www.xxx.com'
2、读取Cookie
 
    Cookie的读取相对来说就要简单很多的,我们只要通过document.cookie的方式就可以获取到网站上所设置的Cookie,

document.cookie

3、删除Cookie
 
  假使你要删除 Cookie得话,只需要将其过期时间设置成过去的时间即可(名称必须与你想要删除的 Cookie 名称一致)
  

document.cookie = 'cookname=cookievalue; expires=Thu, 01 Jan 1970 00:00:00 GMT'

简易版封装

// 简单封装
const CookieUtile = {
// 设置
setCookie(key, value, time) {
const date_ = new Date()
date_.setDate(date_.getDate() + time) // 当前时间+过期时间
document.cookie = key + '=' + value + ';expires=' + date_ // 写入到document
},
// 设置
getCookie(key) {
const CookieArray = document.cookie.split(';') // 多个cookie通过;分割为多个由'键=值'组成的数组
for (let i = 0; i < array.length; i++) {
const newCookieArray = CookieArray[i].split('=') //去掉中间的等号 得到只有键值组成的新数组
const newCookieKey = newCookieArray[0].replace(/^\s/, '') // 去除多个cookie存值的时候可能出现cookie的值名前面有空格的情况
if (newCookieKey == key) {
return newCookieArray[1]
}
return ''
}
},
// 删除
getCookie(key) {
this.setCookie('name', '', -1);
} }

漫谈客户端存储技术之Cookie篇的更多相关文章

  1. 常见的浏览器端的存储技术:cookie

    工作原理: cookie是存在用户硬盘中,用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息.当用户再次访问这个站点时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie. ...

  2. HTML5之客户端存储(Storage)

    关于客户端存储技术 storage 一.关于客户端(浏览器)存储技术 浏览器的存储技术第一个能想到的应该就是cookie,关于cookie本身出现的初衷是为了解决客户端识别,可存储信息量小(4k左右) ...

  3. 会话技术( Cookie ,Session)

    会话技术:    会话:浏览器访问服务器端,发送多次请求,接受多次响应.直到有一方断开连接.会话结束.        解决问题:可以使用会话技术,在一次会话的多次请求之间共享数据.           ...

  4. 【译】客户端存储(Client-Side Storage)

    本文转载自:众成翻译译者:文蔺链接:http://www.zcfy.cc/article/660原文:http://www.html5rocks.com/en/tutorials/offline/st ...

  5. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...

  6. Node.js_express_浏览器存储技术 Cookie(服务器将少量数据交于浏览器存储管理)

    浏览器存储技术 Cookie 服务器将少量数据交于浏览器存储管理 解决 http 无状态协议的问题(无法区分多次请求是否发送自同一客户端) 一个网页一般最多 20个的 cookie,每个 cookie ...

  7. H5的本地存储技术及其与Cookie的比较

    第一部分: H5的本地存储技术 HTML5 提供了两种在客户端存储数据的新方法.先看下面的例子: 例1:var mySelection = {name:"car", amount: ...

  8. Web客户端数据存储学习笔记——Cookie

    今天对登录访问的安全以及web客户端存储做了一些大致的学习,决定在这方面加深理解,记录在博客里.第一个接触到的是Cookie... WHAT? WHY? HOW? 在学习cookie的使用时发现其名称 ...

  9. 客户端技术:Cookie 服务端技术:HttpSession

    客户端技术:Cookie 服务端技术:HttpSession 07. 五 / android基础 / 没有评论   一.会话技术1.什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器.这 ...

随机推荐

  1. Attention Mechanism in Computer Vision

    ​  前言 本文系统全面地介绍了Attention机制的不同类别,介绍了每个类别的原理.优缺点. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘信息. 概 ...

  2. 国产化之银河麒麟.netcore3.1访问https服务的两个问题

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x64.龙芯.飞腾.鲲鹏等. 考虑到这些基础产品对.NETCore的支持,最终选择了3.1版 ...

  3. k8s入门之基础环境准备(一)

    一.在虚拟机中安装Ubuntu20.04.4系统 1.下载Ubuntu20.04.4服务器版本系统 下载链接地址如下: https://mirrors.tuna.tsinghua.edu.cn/ubu ...

  4. java序列回显学习

    java反序列化回显 在很多不出网的情况下,一种是写webshell(内存嘛),另一种就是回显,本文先学习回显,回显的主要方式有一下几种. defineClass RMI绑定实例 URLClassLo ...

  5. Oracle 定时任务增删改查

    创建 -- 创建定时任务 DECLARE jobno NUMBER; BEGIN dbms_job.submit ( jobno, -- 定时器ID,系统自动获得 'PRC_INSERT;', -- ...

  6. openstack PCI透传(GPU)

    描述 kolla-ansible部署openstack的GPU透传方法 一.gpu物理服务器配置 在gpu服务器上主启用IOMMU 确认内核⽀支持iommu $ cat /proc/cmdline | ...

  7. CSS预编译器

    零.CSS预编译器 CSS预处理器是指对生成CSS前的某一语法的处理.CSS预处理器用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,供项目使用 CSS预处理器为CSS增加一 ...

  8. 团队Arpha1

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 **过去两天完成了哪些任务 ** 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 与服务器连 ...

  9. ES6片段

    那些可能会忘记或不知所以然的点: 1. 2. 3. 4. 5. 6. /* 函数调用会在内存形成一个"调用记录",又称调用帧,保存调用位置和内存变量等信息. 如果在函数 A 的内部 ...

  10. linux下nginx软件的学习

    参考博客 1.nginx是什么 nginx是一个开源的,支持高性能,高并发的web服务和代理服务软件.它是开源的软件. nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更 ...