目录
HTTP:Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议;HTTP是基于TCP/IP通信协议来传递数据的。
一、主要特点:
HTTP是应用层协议
1.支持服务端/客户端两种模式
2.简单快速:
客户向服务器请求服务时,只需传送请求方法和路径。请求的方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的服务规模小,因而通信速度很快。
3.灵活
允许传输任意类型的数据对象。
4.无连接
限制每次连接只处理一个请求
5.无状态
对事物处理没有记忆能力
二、报文结构
三、请求响应的步骤
1.客户端连接到服务端
2.发送HTTP请求
3.服务器接收请求并返回HTTP响应
4.释放TCP连接
5.客户端浏览器解析HTTP内容
一个常考的问题:
在浏览器地址栏中键入URL,按下回车之后经历的流程:
1.DNS解析
2.TCP连接
3.客户端发送HTTP请求
4.服务端接收HTTP请求并返回HTTP报文
5.浏览器解析渲染页面
6.连接结束
四、HTTP状态码:
1.五种可能的取值:
1XX:指示信息,表示已经收到请求,继续处理
2XX:成功--表示请求已经被成功接收、理解、接受
3XX:重定向--要完成请求必须进行进一步操作
4XX:客户端错误--请求有语法错误或者无法实现
5XX:服务端错误--服务器未能实现合法的请求
2.常见的状态码:
200 OK:正常返回信息
400 Bad Request : 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized : 请求未经授权(这个状态代码必须和WW-Authenticate报头域一起使用)
403 Forbidden : 服务器收到请求,但是拒绝提供服务
404 Not Found : 请求资源不存在,eg,输入了错误的URL
500 Internal Server Error : 服务器发生不可预期的错误
503 Server Unavaliable : 服务器当前不能处理客户端的请求
五、Get请求和POST请求的区别
三个层面:
HTTP报文层面:GET将请求放在URL,POST放在报文体中
数据库层面:GET符合幂等性和安全性,POST不符合
其他层面:GET可以被缓存、被存储,POST不行
注:HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。
六、Cookie和Session的区别
1.Cookie是什么?
(1)是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
(2)客户端再次请求的时候,会把Cookie回发
(3)服务器接收到后,会解析Cookie生成与客户端相对应的内容
Cookie的发送过程如图:
2.Session是什么?
(1)服务器端的机制,在服务器上保存的信息
(2)解析客户端请求并操作session id,按需保存状态信息
Session的实现方式
(1)使用Cookie来实现
(2)使用URL回写来实现
3.Cookie和Seesion的区别
(1)Cookie数据存放在客户的浏览器上,Session数据存放在服务器上
(2)Session相对于Cookie更安全
(3)若考虑减轻服务器负担,应该使用Cookie