1. Cookie
2. Session
3. webStroage
4. 总结
cookie
cookie的起源
HTTP是无状态的协议。一旦数据交换完毕,客户端与服务器端就会断开连接,再次建立连接需要发送新的请求。这就意味着服务器无法跟踪上次会话.在Session出现之前。基本上所有的网站都采用Cookie来跟踪会话。
什么是cookie
cookie是指某些网站为了辨别用户省份,通过加密,存储在用户本地终端(client side)上的数据。cookie通过HTTP请求报文和响应报文配合完成。cookie是存储于访问者计算机中的变量。每当同一台计算机通过浏览器请求同一个页面时,就会发送这个cookie。
简单的说,当一个用户通过HTTP协议访问一个服务器的时候,这个服务器会将一些key/Value键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时,这个用户下次访问这个服务器的时候,数据又被完整的带回给服务器。cookie就是这样一种机制,可以由前后端对其进行控制,而不是语言本身的性质。通过在控制台输入(document.cookie)就可以了,就会显示自己网站的cookie。cookie如果不加密,别人可以轻易的看见的账号密码。
cookie属性
属性 | 描述 |
---|---|
name (String) | 该cookie的名称,一旦创建,不可改变 |
value (Object) | 该cookie的值。如果值为Unicode字符,需要为字符编码。如果为二进制,则需要base64编码 |
maxAge (int) | 该cookie的失效时间,单位妙。如果为正数,则该cookie在maxAge妙之后失效。如果为负数,该cookie为临时cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该cookie。如果为0表示删除。默认为-1(相对文档的请求时间) |
expires (int) | 绝对的过期时间(GTM格式),客户端和服务器端不同步会造成影响,不建议单独使用 |
secure (boolean) | 该cookie是否仅被安全协议传输。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。 |
path (String) | 该cookie的使用路劲。如果设置为”/sessionWeb/”,则只有contextPath为”/sessionWeb”的程序可以访问该cookie。如果设置为”/”,则本域名下的contextPath都可以访问该cookie |
domin (String) | 可以访问该Cookie的域名。如果设置为”.google.com”,则所有以”google.com”结尾的域名都可以访问该cookie |
comment (string) | 该cookie的用处说明。浏览器显示cookie信息的时候显示该说明 |
version (int) | 该cookie使用的版本号。0表示遵循Netscape的cookie规范,1表示遵循W3C的RFC 2109规范 |
前后端设置cookie
前端使用原生js和jquery对cookie进行操作。
// 原生js
// 设置和修改cookie,新设置的cookie如果与原有的cookie相同(名称,路径,域名都相同),会将原有的cookie覆盖(采用新cookie),如果没有直接设置
var date = new Date();
// 设置cookie属性的max-age/expires,max-age是妙,expires是毫秒,这个地方设置过期时间为一天
var cookieExpire = date.getTime() + 24 * 3600 * 1000
document