HTTP协议是一个无状态的协议,服务器无法区分出两次请求是否发送自同一服务器。
需要通过会话控制来解决这个问题,会话控制主要有两种方式Cookie 和 Session。
Cookie就是一个头,Cookie由服务器创建,服务器以响应头的形式发送给客户端,
客户端收到Cookie以后,会将其自动保存,在下次向服务器发送请求时会自动将Cookie以请求的形式发出,服务器收到以后就可以检查请求头中的Cookie并且可以根据Cookie中的信息来识别出不同的用户。
具体操作:设置、读取、删除cookie
- 创建document.cookie=‘key=value; key1=value2’
- 读取var x = document.cookie
- 修改(进行覆盖)document.cookie=‘newkey=newvalue; newkey1=newvalue2’
- 删除(设置过期时间expires )document.cookie = "key=value’; expires=Thu, 01 Jan 1970 00:00:00 GMT";
function setCookie(name, value,days) { //三个参数,一个是cookie的名子,一个是值,最后一个是天数 var exp = new Date(); //setTime() 方法以毫秒设置,向 1970/01/01 添加毫秒,并显示新的日期和时间。 exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000); //toGMTString格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果。 document.cookie = name + "=" + value + ";expires=" + exp.toGMTString(); }
属性值:
① Expires 时间要转成GMT形式 : toGMTString();
② Max-Age:毫秒 60 * 60 * 24 一天
③ Domain属性指定浏览器发出 HTTP 请求时,哪些域名要附带这个 Cookie。
如www.example.com会设为example.com,而且以后如果访问example.com的任何子域名,
④ Path属性指定浏览器发出 HTTP 请求时,哪些路径要附带这个 Cookie。
如PATH属性是/,那么请求/docs路径也会包含该 Cookie。当然,前提是域名必须一致。
1)如不设置过期时间,只要关闭浏览器窗口,Cookie就消失了。被称为会话Cookie。
一般不保存在硬盘上而是保存在内存里。
2)设置了过期时间,Cookie保存到硬盘上,关闭后再次 打开浏览器,这些Cookie依然有效直到超过设定的过期时间。。
Cookie具有不可跨域名性