这次就来讲讲实用的两个常见的请求头,cookie和session。这两者是两个不同的东西,好比你吃饭还是一直吃饭的区别,在入门的时候,这个往往是很重要的一点。一定要对这两个有一定的认知和了解,主要是太基础了。
HTTP协议
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。而且HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。这是比较官方的说法,说白了他就是一个让我们客户端访问服务端时进行请求<---->响应的协议(HTTP默认端口是80)
什么是 Cookie??
这个直接翻译又叫做饼干,对于这个你们肯定不陌生。Cookie是保存在客户端的纯文本文件。比如txt文件。所谓的客户端就是我们自己的本地电脑。当我们使用自己的电脑通过浏览器进行访问网页的时候,服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑。这个证书就是cookie。通俗点讲就是我们在浏览网页的时候,服务器给的我们一个身份令牌,而且这个身份是唯一的,没有人和你一样,你拥有了这个身份,服务器才能认识你。但是呢Cookie具有不可跨域名性,就是假如我们现在在访问百度,那么我们不会带上谷歌的cookie。
所以Cookie具有:
- 存储性
- 不可跨越性
- 唯一性
什么是session ???
服务端为了保护用户状态而创建的特殊对象,当游览器第一次访问服务端的时候,服务器会创建一个session对象,服务器会以cookie的方式向浏览器发送一个sessionid,一边之后访问的确认对象 。
emmmm差不多就是这样理解的。需要了解的是访问网站,也就是请求服务器的时候,服务器会自动的分配发送sessionid。
Session--会话控制
网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
cookie和session的关系
Session的使用需要Cookie的支持,因为单独的Session还是无法知道当前访问服务器的是否是同一个客户端,它要根据存储在Cookie中的JSESSIONID来进行判断[这个Cookie是客户端自动创建的],如果客户端关闭了Cookie,那么Session是没有什么效果的。这个时候,需要使用URL重写的方式,将JSESSIONID直接放置在URL中,访问服务器的时候可以直接进行解析。
总结
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。(比如xss...)
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过3K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。