大话Cookie

据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上。伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web storage,其中两个重要对象sessionStorage和localStorage可以解决浏览器sessions和长期储存数据的目的,并且兼容性还不错,IE8+以上浏览器都支持。

那我们直接学习Web storage不就可以了?个人认为,这不是一个很好的学习方法。Web Storage的出现主要还是因为cookie的一些小毛病不能够满足前端工程师日常开发而被加入到HTML5中作为新的API的。本质上说,localStorage和sessionStorage实现的本质与cookie是一样的。所以在接触之前,先熟悉并且掌握cookie对于Web storage的学习还有很大的帮助。

这篇文章会涉及的内容与技术:

  • module bundler:webpack

  • javascirpt如何实现读取,写入,删除Cookie

  • js-cookie实现读取,写入,删除Cookie

cookie定义

cookie其实就是服务器保存在浏览器的一小段文本信息。怎么保存呢?浏览器在向服务器发送一个http请求时,会在发送请求的首部字段中添加Cookie字段,并且附上相应的key,value。服务器接收到请求并且正确返回响应的时候,会在响应的头部字段中添加Set-cookie字段。这时候就完成了一次数据储存的操作。当我们关闭浏览器并且再次打开的时候,相应需要存储的信息就会在expires指定的期限内存储下来。

简单的说,就是:

  • 当用户访问web页面时,他的记录可以保存在cookie中。

  • 在用户下一次访问同一页面时,可以在cookie中读取用户的访问记录。

cookie特点

  • 每个cookie的大小不能超过4KB。

  • 通过HTTP协议的方式来存储数据。

  • cookie会影响同一域名下的根目录及其子目录。举例来说,如果当前URI是keithchou.github.io,如果设置path为'/'或者不设置(默认值为/),这个cookie对该域名的根路径和它的所有子路径都有效。如果path设置为/music,那么这个cookie只有在访问keithchou.github/music及其子路径才有效。

  • 同源政策。浏览器的同源政策规定,两个网址只要域名和端口相同,就可以共享cookie。注意,这里不要求协议相同。也就是说,'http://keithchou.com'设置的cookie,可以被'https://keithchou.com'读取。

cookie属性

cookie常用的属性有:

  • value

  • domain

  • path

  • expires

  • secure

  • HttpOnly

属性的具体内容就不再赘述了,属性都比较简单。

cookie实现

接下来想说说两种方式来实现cookie。一是原生javascript实现cookie,二是通过js-cookie这个小框架来实现cookie。

javascript实现数据存储

基本的cookie操作有三种:读取、写入和删除。javascript操作cookie主要是通过document.cookie来实现的。document.cookie的一大特点是,可以读取所有的Cookie,但是每次写入cookie的时候只能一条一条写入。看一个从百度获取的cookie。


原生javascript实现cookie的方法如下。此代码摘自《javascript高级程序设计 第三版》。


javascript实现cookie的代码并不复杂,只要有javascript基础,基本上都可以看懂。给出原生javascript实现cookie的操作是因为要去实际的了解一下整个过程,不然使用前端大牛封装好的库来实现cookie总感觉有一些东西特别难以理解。

js-cookie

首先我想说的是,网上大量的资料都是对$.cookie进行介绍的。官网明确指出这个项目已经不再继续维护了。为什么还要使用阿?所以不再介绍。这里要介绍另外一个实现cookie的库。js-cookie。具体的api在官网上有详细的介绍。传送门:js-cookie

首先,进入本地项目,通过cnpm安装js-cookie。


然后,在使用webpack中的入口文件entry.js引入js-cookie。


当然,接下来就可以使用了。下面是一个登录界面的小demo。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于协同过滤、矩阵分解、gvdt+lr、wide&deep等算法的推荐模型python实现源码含项目说明+数据集.zip 推荐算法的实现,python、jupyter双版本,详尽注释。 正在努力更新中... #### 对MovieLens电影评分小型数据集做Top N推荐: 0. baseline--推荐最热门的N=20部电影,precision=11%, recall=4%, coverage=0.2%, popularity=169。这部分内容包含在UserCF.py 1. UserCF,precision=25%, recall=10%, coverage=10%, popularity=4.4 2. ItemCF,precision=26%, recall=10%, coverage=15%, popularity=4.3 #### 对MovieLens电影评分小型数据集做评分预测: 0. baseline--使用所有评分的均值做预测,MAE:0.83。这部分内容包含在LinearRegression_Rating.ipynb 1. BiasSVD,MAE:0.68 2. LinearRegression,MAE:0.61 #### 对criteo广告展示小型数据集做点击率预测 1. gbdt+lr,binary_logloss:0.4783 #### 对Census数据中的收入做二分类 0. Google TensorFlow Guide上的Wide&Deep基准模型准确率: 0.83。(从有的知乎博主分享的链接来看,已经打不开了) 1. Wide&Deep, accuracy: 0.8587
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于C++实现的连接池、线程池、内存池、对象池项目源码含项目说明.zip ## CPP连接池 ### 关键技术点 MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和 unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型 ## CPP线程池 ### 关键技术点 作为五大池之一(内存池、连接池、线程池、进程池、协程池),线程池的应用非常广泛,不管是客户 端程序,还是后台服务程序,都是提高业务处理能力的必备模块。有很多开源的线程池实现,虽然各自 接口使用上稍有区别,但是其核心实现原理都是基本相同的。 ## CPP内存池 ### 关键技术点 读一下STL和nginx的内存池实现,并且单单的内存池的地方项目提取出来,方便后面对于不同类型的内存池进行分析 ## 对象池 ### 关键技术点 对于new和delete,malloc和free的源码进行阅读,对于创建对象需要多次创建和释放的的情况实现一个对象池 实现的方案使用Queue进行创建

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值