Cookie基本简介
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
由于HTTP协议是无状态的,要跟踪该会话,必须引入一种机制。
Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
如果Cookie的生存时间是整个会话期间的话,那么浏览器会将Cookie保存在内存中,浏览器关闭时就会自动清除这个Cookie。另外一种情况就是保存在客户端的硬盘中,浏览器关闭的话,该Cookie也不会被清除,下次打开浏览器访问对应网站时,这个Cookie就会自动再次发送到服务器端。
客户端------->服务器端
客户端<-------服务器端
客户端------->服务器端
客户端<-------服务器端
get请求
post请求
Cookie有不可跨域名性
Cookie中一般使用Utf-8编码,不推荐GBK编码
Cookie的有效期maxAge
正数在maxAge秒后失效
负数关闭浏览器就失效
0删除该Cookie
Cookie不提供删除和修改操作,只能覆盖
Cookie和session的区别
1.Cookie储存在浏览器上,session储存在服务器上
2.Cookie不是很安全,别人可以通过分析放在本地上的Cookie并进行Cookie欺骗,考虑到安全用应该使用session
3.session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑减轻服务器性能,应该使用Cookie
4.单个Cookie在客户端的限制是3k,不能超过。
服务端session的实现对客户端的Cookie有依赖关系的,上面讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到HTTP请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的Cookie的时候,服务端的session也会不能正常使用(注意:有些资料说ASP解决这个问题,当浏览器的Cookie被禁掉,服务端的session任然可以正常使用,ASP我没试验过,但是对于网络上很多用php和jsp编写的网站,我发现禁掉Cookie,网站的session都无法正常的访问)。