Cookie,Session,LocalStorage 和 SessionStorage

Cookie

  1. Cookie是什么

cookie 是浏览器储存在客户端上的一段文本文件,作用是通过存储并返回服务器一定格式的数据,让服务器识别用户。当cookie存在时,用户就可以带着身份浏览该网站的任意页面。

  1. Cookie的起源

早期的 Web 应用面临的最大问题之一就是如何维持状态。简言之,服务器无法知道两个请求是否来自于同一个浏览器。当时,最简单的办法就是在请求的页面中插入一个 token,然后在下次请求时将这个 token 返回至服务器。这需要在页面的 form 表单中插入一个包含 token 的隐藏域,或者将 token 放在 URL 的 query 字符串中来传递。这两种方法都需要手动操作,而且极易出错。

当时网景通讯的一名员工 Lou Montulli,在 1994 年将 “magic cookies” 的概念应用到 Web 通讯中。他试图解决 Web 的第一个购物车应用,现在购物车成了购物网站的支柱。他的原始说明文档提供了 cookie 工作原理的基本信息,该文档后来被作为规范纳入到 RFC 2109(大多数浏览器的实现参考文档)中,最终被纳入到 RFC 2965 中。Montulli 也被授予 cookie 的美国专利。网景浏览器在它的第一个版本中就开始支持 cookie,现在所有 Web 浏览器都支持 cookie。

  1. 如何设置cookie响应头

服务器通过发送一个称为 Set-Cookie 的 HTTP 消息头来创建一个 cookie,Set-Cookie消息头是一个字符串,其格式如下:

Set-Cookie: <cookie-name>=<cookie-value> 

当浏览器拿到该消息头后,会把Set-Cookie:后的key=value格式内容存储在cookie文件中,并且在该地址下需要返回的内容中添加返回头


Session

  1. Session是什么

session是存放在服务器端的一串数据,当浏览器发送请求时, 服务器自动生成一个session对象和一个session ID,并将session ID通过响应头发送至浏览器,当浏览器第二次发出请求时,会把之前接收到的session ID放在请求头中,服务器接收到数据并提取session ID后,通过识别对比来找到该用户对应的session对象。

  1. Session ID如何保存和传输
  • 使用cookie方法来保存和传输
  • 使用URL附加信息,例如xxx.com?sid=xxxx
  • 使用隐藏域
  1. 什么是JsessionID?

Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。

  1. Session和cookie的区别

cookie和session最大的区别在于一个保存在客户端(浏览器)一个保存在服务器。
cookie使用的是客户端内存而session使用的是服务器内存,所以尽量推荐用cookie来存储会话信息
但cookie相对于session来说更不安全,因为cookie可以在客户端被篡改,而session因保存在服务器,相对安全。


LocalStorage

  1. LocalStorage是什么

LocalStorage是HTML5中新增的本地存储API,通常有5MB大小(不同浏览器标准不一)。

  1. LocalStorage的特点

LocalStorage内储存的数据永久保存在浏览器内,直到被手动清除为止,而且,数据不会因为浏览器的关闭而丢失。

  1. LocalStorage与cookie的区别
特点 \名称LocalStoragecookie
存储时间永久存储直到手动清除若无一般设置则关闭时清除,若设置时间则只在时间内清除
存储大小5MB4KB
服务器通讯数据不会每次传递,只在调用时传递数据每次请求都会传递cookie,若保存数据过多会带来性能问题

SessionStrorage

SessionStrorages除了关闭浏览器会被清除之外,其他设置和特点与LocalStorage相同


参考连接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值