一边学习前端,一边经过博客的形式本身总结一些东西,固然也但愿帮助一些和我同样开始学前端的小伙伴。前端
若是出现错误,请在评论中指出,我也好本身纠正本身的错误jquery
author: thomaszhouweb
cookie和session的区别
深刻理解session和cookie的关系
Session: 是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据能够保存在集群、数据库、文件中;数据库
Cookie: 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。后端
session 的运行依赖 session id,而 session id 是存在 cookie中的浏览器
三、有人问,若是客户端的浏览器禁用了 Cookie怎么办?通常这种状况下,会使用一种叫作URL重写的技术来进行会话跟踪,(在 url 中传递 session_id)即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。缓存
四、 Cookie有个很经常使用的场景就是自动填上用户名和密码安全
原本 session 是一个抽象概念,开发者为了实现中断和继续等操做,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。bash
而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。能够认为是 session 的一种后端无状态实现。服务器
而咱们今天常说的 “session”,是为了绕开 cookie 的各类限制,一般借助 cookie 自己和后端存储实现的,一种更高级的会话状态实现。
因此 cookie 和 session,你能够认为是同一层次的概念,也能够认为是不一样层次的概念。具体到实现,session 由于 session id 的存在,一般要借助 cookie 实现,但这并不是必要,只能说是通用性较好的一种实现方案。
localStorage,sessionStorage和cookie的区别
共同点:都是保存在浏览器端、且同源的
数据存储方面
存储数据大小
数据存储有效期
做用域不一样
同源窗口
中都是共享的;也就是说只要浏览器不关闭,数据仍然存在同源窗口
中都是共享的.也就是说只要浏览器不关闭,数据仍然存在Web Storage拥有setItem、getItem、removeItem、clear等方法,不像cookie须要本身封装setCookie、getCookie等方法
sessionStorage与页面js数据对象的区别
页面中通常的js对象的生存期仅在当前页面有效,所以刷新页面或转到另外一页面这样的从新加载页面的状况,数据就不存在了()
而sessionStorage只要同源的同学口中,刷新页面或进入同源的不一样页面,数据始终存在,也就是说只要浏览器不关闭,数据仍然存在()
cookie使用方法介绍
cookie能够写好封装,也可直接用已经写好的框架这里推荐一个吧‘jquery.cookies.2.2.0.min.js’;注意还有有一个是cookie.js的也能够,我的以为没有“jquery.cookies.2.2.0.min.js”好用。
先说一下,JavaScript原生的用法。
Cookie 以名/值对形式存储 例如username=John Doe,这里的数据是string类型,如要是其余格式注意进行格式转换。
JavaScript 可使用 document.cookie 属性来建立 、读取、及删除 cookie。JavaScript 中,建立 cookie 以下所示:
document.cookie="username=John Doe";
复制代码
您还能够为 cookie 添加一个过时时间(以 UTC 或 GMT 时间)。默认状况下,cookie 在浏览器关闭时删除:
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT";
复制代码
您可使用 path 参数告诉浏览器 cookie 的路径。默认状况下,cookie 属于当前页面。
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
复制代码
function setCookie(cname,cvalue,exdays)
{
var SetTime = new Date(); //设置过时时间
SetTime.setTime(SetTime.getTime()+(exdays*24*60*60*1000)); //设置过时时间
var expires = "expires="+SetTime.toGMTString(); //设置过时时间
document.cookie = cname + "=" + cvalue + "; " + expires; //建立一个cookie
}
复制代码
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
复制代码
将cookie的有效时间改为昨天。
添加/修改cookie并设定过时时间:
`$.cookies.set('cookie_id', 'cookie_value', { hoursToLive: 10 });
复制代码
这里设置的是过时时间是10小时, 还能够这样设置过时时间:
expireDate = new Date();
expireDate.setTime( expireDate.getTime() + ( 10 * 60 * 60 * 1000 ) );
$.cookies.set('cookie_id', 'cookie_value', {expiresAt:expireDate});
复制代码
获取cookie
$.cookies.get('cookie_id');
复制代码
删除cookie
$.cookies.del('cookie_id');
复制代码
SessionStorage 和 localStorage用法
H5对于web storage的支持很友好,使用方法很简单
sessionStorage.setItem(keyName,value); // 将value存储到key字段中
//或者
sessionStorage.keyName='value';
eg:sessionStorage.setItem("name","thomas");
localStorage.getItem(keyName); //获取指定key的本地存储的值
//或者
var keyName=localStorage.key;
eg:sessionStorage.getItem("name");
复制代码
下面我只列举sessionStorage方法。
其余的方法基本同上,只是将前缀sessionStorage改为localStorage便可
sessionStorage.getItem(keyName); //获取指定key的本地存储的值
//或者
var keyName=sessionStorage.key;
eg: sessionStorage.getItem("name");
复制代码
sessionStorage.removeItem(keyName); // 删除指定ke的本地存储的值
eg: sesisonStorage.removeItem("name");
复制代码
sessionStorage.clear() //清除全部localStorage数据
复制代码