cookie和localStorage、sessionStorage的区别
先来讲讲localStorage吧,我最初接触localStorage,是听一个同学说他在做项目的过程中用到过这个。但是我自己也用到过的,就是在学习React的时候,在做一个小demo,这个demo简单来说就是一个静态的留言板吧,不能对下面的评论进行任何操作。但是在react中,存储这些评论用的是localStorage。这里先不说,这个demo的详细解说我留在下一篇博客中。
一、localStorage
顾名思义:本地存储,再准确点来说,就是在客户端存储数据。
HTML5提供了两种在客户端存储数据的新方法:
- localStorage:没有时间限制的数据存储
- sessionStorage:针对一个session的数据存储
之前,这些都是由cookie完成的。但是cookie不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得cookie速度很慢而且效率也不高
在HTML5中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使得在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储在不同的区域,并且一个网站只能访问其自身的数据。
HTML5使用JavaScript来存储和访问数据。
localStorage方法
localStorage方法存储的数据没有时间限制。
如何创建和访问locaStorage
localStorage.lastname = "smith";
document.write(localStorage.lastname);
//对用户访问页面的次数进行计数
if(localStorage.pagecount){
console.log(typeof(localStorage.pagecount)); //string
localStorage.pagecount = Number(localStorage.pagecount) + 1;
}else{
localStorage.pagecount = 1;
}
document.write("Visits" + localStorage.pagecount + " times(s)");
//当用户关闭浏览器窗口后,会继续计数。
二、sessionStorage
这个方法针对一个session进行数据存储。当用户关闭浏览器窗口后,数据会被删除
如何创建并访问一个sessionStorage
sessionStorage.lastname = "smith";
document.write(sessionStorage.lastname);
//sessionStorage对用户访问页面的次数进行计数
if(sessionStorage.pagecount){
sessionStorage.pagecount = Number(sessionStorage.pagecount) + 1;
}else{
sessionStorage.pagecount = 1;
}
//当用户关闭浏览器窗口,然后再试一次,计数器已经重置了。

一般情况下,浏览器不会修改cookie,但会频繁操作两个storage。如果保存了cookie的话,http请求中一定会带上,而两个storage可以由脚本选择性的提交。
sessionStorage会在会话结束之后销毁,而local的那个会永久保存直到覆盖。cookie会在过期时间之后销毁。
安全性方面,cookie中最好不要放置任何明文的东西。两个storage的数据提交后在服务端一定要校验
相同点:
三者都可以用来在浏览器端存储数据,而且都是字符串类型的健值对。
三、cookie
主要作用
cookie的是用来解决“如何保存客户端的用户信息”。当用户访问web页面的时候,他的名字可以记录在cookie中,当用户下一次访问该页面的时候,可以在cookie中读取用户访问记录。
方式
cookies以名值对的形式进行存储,当浏览器从服务器上请求web页面的时候,属于该页面的cookies会被添加到该请求中。服务端通过这种方式来获取用户的信息。cookie用来识别用户。
用户遇到的情况
- 访问者首次访问页面时,会填写名字和密码,这些都会存储在cookie中,当访问者再次访问网站时,他们会收到类似“welcome xxx”,这个名字是从cookie中取回的。
- 访问者勾选了记住密码的时候,密码会被存储在cookie中,可以从cookie中取密码,然后填充在输入框中
- 访问者首次访问某个网站时,当前日期可存储于cookie中,当他们再次访问网站的时候,会收到类似上次您于什么时间登录。
创建cookie
js可以使用document.cookie属性来创建、读取以及删除cookies
document.cookie = "username=sminocence";
还可以为cookie添加一个过期的时间(以UTC或者GMT),默认情况下,cookie会在浏览器关闭时删除:
document.cookie = "username=sminocence; expires=Thu, 18 Dec 2013 12:00:00 GMT";
还可以使用path参数告诉浏览器cookie的路径。默认情况下,cookie属于当前页面
document.cookie = "username=sminocence; expires=Thu, 18 Dec 2013 12:00:00 GMT;path=/";
获取cookie
可以通过以下代码来读取cookies
var x = document.cookie;//将以字符串的方式返回所有的cookies,类型格式:cookie1=value;cookie2=value;cookie3=value;
修改cookie
document.cookie="username=sminocence; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
//修改cookie类似于创建cookie,旧的cookie会被覆盖,删除的时候,不必指定cookie的值。
一个小栗子
//创建cookie
function setCookie(name,value,exdays){
var date = new Date();
date.setTime(date.getTime() + (exdays*24*60*60*1000));
var expires = "exdays=" + date.toGMTString();
document.cookie = name + "=" + value + expires;
}
//获取cookie
function getCookie(name){
var myname = name + "=";
var ca = document.cookie.split(";");
for(var i=0,len = ca.length;i<len;i++){
var c = ca[i].trim();//去掉字符串首尾空格
if(c.indexOf(myname) == 0){
return c.substring(myname.length,c.length);
}
}
return "";
}
//检测cookie
function checkCookie(){
var user = getCookie("username");
if(user != ""){
alert("welcome" + user);
}else {
user = prompt("请输入你的名字:","");//用于显示可提示用户进行输入的对话框
if(user != "" && user != null){
setCookie("username",user,7);
}
}
}
checkCookie();
参考:https://www.jianshu.com/p/846c033c0cc8
cookie和localStorage、sessionStorage的区别的更多相关文章
- cookie和localstorage sessionStorage的概念、区别、使用场景
本文分为三大板块: 1 webStorage的概念 2 cookie/localStorage/sessionStorage的介绍 3 三者之间的共同点和区别 **所有代码引用均来自 作者:OBKor ...
- js中cookie,localStorage(sessionStorage)的存取
一.cookie (原生的不好用,自己简单封装) 1. 存cookie的方法: function setCookie(c_name,value,expiredays) { var exdate=new ...
- cookie session localstorage sessionStorage区别
cookie:http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html 重要特点: 1.cookie 有大小设置,有过期时间设 ...
- 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输
需求是这样的:需要统计用户公司某款产品用户的回馈情况,美工给的设计多个psd,每个页面里面都有一个选择题,让用户选择自己的答案,最后经过几次选择之后在最后一个页面统一提交到后台!所以这里引出的技术需求 ...
- 什么是cookie(前段时间看到别人简历上把cookie和localStorage混淆了所以专门又去了解了下)
在前端面试中,有一个必问的问题:请你谈谈cookie和localStorage有什么区别啊? localStorage是H5中的一种浏览器本地存储方式,而实际上,cookie本身并不是用来做服务器存储 ...
- 客户端 localStorage, sessionStorage, cookie 的区别
SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对! 区别在于前两者属于WebStorage,创建它们的目的便是存 ...
- localstorage sessionstorage cookie的区别
一.基本概念 Cookie cookie比较小,大小限制在4kb左右,是网景公司的前雇员 LouMontulli 在1993年3月的发明.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记 ...
- cookie、session、localStorage、sessionStorage的区别
cookie的机制 cookie是存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密. Cookie是服务器发 ...
- cookie, localStorage, sessionStorage区别
cookie 有过期时间,默认是关闭浏览器后失效,4K,兼容ie6,不可跨域,子域名会继承父域名的cookielocalStorage 永不过期,除非手动删除,5M,兼容IE8,不可跨域,子域名不能继 ...
- Cookie、LocalStorage 与 SessionStorage的区别在哪里?
基本概念 Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通 ...
随机推荐
- 3.FireDAC组件快照
TFDManager 连接定义和Connect连接管理 TFDConnection 数据库连接组件,支持三种连接方式:1.持久定义(有一个唯一名称和一个配置文件,可以由FDManager管理) 例: ...
- C基础 mariadb处理简单案例
引言 MariaDB 是一款灰常不错开源数据库. 这里直接用它来解决业务问题. 业务需求: 现在数据库中表示按照天分表的. 突然我们需要按照月来处理数据. 例如输入一个玩家id, 查找这个玩家这个月内 ...
- mui 选项卡与header文字同步
mui底部tab固定 头部nav可变 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- MySQL5.6.32源码安装
. 安装好--安装MySQL需要的包 yum install -y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc- ...
- 关于级联查询,mybatis
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-// ...
- FineReport——JS二次开发(局部刷新)
在FR中,可以通过在form表单设置多个报表模板,然后通过对某一模板刷新实现局部刷新的功能,在cpt模板中,由于只存在一个模板,所以无法实现局部刷新. 其实,最好的局部刷新办法是自定义一个页面,然后添 ...
- web中的CSS、Xpath等路径定位方法学习
今天不到八点就到公司了,来的比较早,趁着有点时间,总结下web中的CSS.Xpath等路径定位定位的方式吧! 简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代 ...
- POJ 1177 Picture(线段树:扫描线求轮廓周长)
题目链接:http://poj.org/problem?id=1177 题目大意:若干个矩形,求这些矩形重叠形成的图形的轮廓周长. 解题思路:这里引用一下大牛的思路:kuangbin 总体思路: 1. ...
- mysql5.7 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql5.7初次登录使用提示 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before ...
- centos7yum安装tomcat
执行安装命令 [root@localhost ~]# yum -y install tomcat 查询tomcat是否安装成功 [root@localhost ~]# rpm -q tomcat to ...