HTTP(Hypertext Transfer Protocal)超文本传输协议。是一种详细规定了客户端浏览器和万维网服务器之间相互通讯的规则,通过因特网传送万维网文档的数据传送协议。
HTTP的请求响应模型:
HTTP协议永远都是客户端发起请求,服务器回送响应。如下图所示:
这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
工作流程:
一次HTTP操作称为一个事务,其工作过程分为四步:
- 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
- 客户端接收服务器返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
常见的状态码:
1xx:
100 客户端必须继续发出请求
101 客户端要求服务器根据请求转换HTTP协议版本
2xx:
200 交易成功
201 提示知道新文件的URL
202 接受和处理、但处理未完成
203 返回信息不确定或不完整
204 请求收到,但返回信息为空
205 服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206 服务器已经完成了部分用户的GET请求
3xx:
300 请求的资源可在多处得到
303 建议客户端访问其他URL或访问方式
4xx:
400 错误请求,如语法错误
401 未授权
402 保留有效Charge To头响应
403 禁止访问
404 没有发现文件、查询或URL
5xx:
500 内部服务器错误
501 未实现
502 网关错误
HTTP状态保持
HTTP协议本身是无状态的,这与HTTP协议本来目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论客户端还是服务端都没有必要记录彼此过去的行为,每一次请求之间都是独立的。cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。后来出现的session机制则是一种在客户端与服务器之间保持状态的解决方案。
Cookie与Session之间的区别
- Cookie将状态保存在客户端,Session将状态保存在服务器端;
- Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。
- Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪一个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;