一、什么是http协议?
http协议(Hyper Text Transfer Protocol,超文本传输协议),客户端和服务器进行数据交互的协议。
http协议的特点:
(1)支持客户端/服务端(C/S)模式
(2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
二、什么是http请求?
http请求是从客户端向服务端发送请求数据。
一次完整的http请求的步骤
(1)输入url
根据域名/IP找到对应的服务器
(2)建立TCP连接(TCP三次握手)
HTTP协议是基于TCP/IP协议来进行通信的。在HTTP进行工作前,客户机需要与服务器建立连接,而连接是需要通过TCP协议进行传输的,TCP协议与IP协议共同构建了了internet。HTTP协议是比TCP协议更高一层的应用层协议,按照规定,只有低层协议建立后,才能建立更高层协议的连接。因此,在HTTP请求前,首先要建立TCP连接。
(3)客户端向服务器发送请求
TCP连接建立后,客户端向服务端发送请求,包括请求行、请求头、请求体
请求行:①请求方法:GET、POST、PUT、DELETE等;②请求url;③HTTP协议以及版本
请求头:HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,例如:Cookie、UA、Accept-Language等
请求体:POST请求时传递的信息;GET请求没有请求体
(4)服务器接收请求,进行相应处理
(5)处理完成后,做出响应,向客户端发送数据
响应的信息主要包括:响应码、响应头、响应体
响应码:又称状态码,一般响应码由3位数字组成
1XX:指示信息—服务器已经接收请求,继续处理
2XX:成功—请求已经被接收成功
3XX:重定向—完成请求需要更进一步的操作
4XX:客户端错误—请求有语法错误或请求无法实现
5XX:服务器错误—服务器在处理请求的过程中发生了错误
常见的状态码以及出现的原因:
200:客户端请求成功
302:临时重定向
401:请求未经过授权
403:服务器接收到请求,但是拒绝执行
404:请求的资源不存在(通常是请求的url错误)
500:服务器内部错误
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
响应头:响应报文头,例如cache、cookie等信息
响应体:服务器返回给客户端的数据
三、cookie、session和token
参考文章:https://www.cnblogs.com/jiu0821/p/5641600.html
原文:https://www.cnblogs.com/arong-xt/p/11177696.html