HTTP协议的主要特点
1.简单快速 每个资源的URI是固定的,可以简单快速的获取
2.灵活 通过一个http协议就可以完成不同数据类型的传输
3.无连接 连接一次就断了,不会保持连接
4.无状态 客户端和服务端是两种身份,一次连接后就断开,下次再连接时,服务器无法区分两次连接是否由同一客户端发起
HTTP报文的组成:
- 请求报文:请求行、请求头、空行、请求体
响应报文:状态行,响应头、空行、响应体
请求行包含:http方法 、页面地址、http协议以及版本
请求头:key\value值 告诉服务端我要什么内容要注意什么类型
空行:分隔请求头和请求体
状态行包含:http协议以及版本
http状态码HTTP方法
主要用GET和POST,其他基本不用
GET————-获取资源
POST———-传输资源
PUT————-更新资源
DELETE———删除资源
HEAD————获取报文首部POST和GET的区别
GET在浏览器回退时是无害的,而POST会再次提交请求 *
- GET请求会被浏览器主动缓存,而POST不会,除非手动设置 *
- GET请求在URL中的参数有长度限制(2KB),而POST没有限制 *
- GET请求参数会被完整的保留在浏览器历史记录中,而POST中的参数不会被保留 *
- GET参数通过URL传递,POST放在Request body中 *
- GET比POST更不安全,因为GET参数直接暴露在URL上,所以不能用来传递敏感信息
- GET产生的URL地址可以被收藏,而POST不可以
- GET请求只能进行url编码,POST支持多种编码方式
- GET请求的参数类型只接收ASCII字符,POST没有限制
HTTP状态码
- 1xx:指示信息-表示请求一接收,继续处理
- 2xx:成功-表示请求被成功接收(200请求成功,206客户发送带有Range头的GET请求,如指定返回长度的,一般请求音频和视频时,就会返回206)
- 3xx:重定向(301请求页面永久转移到新url,302请求页面临时转移到新url,304使用浏览器的缓存)
- 4xx:客户端错误-请求有语法错误或请求无法实现(400客户端有语法错误,401请求未经授权,必须和WWW-Authenticate,403请求页面被禁止,404请求资源不存在)
5xx:服务器错误-服务器未能实现合法请求(500服务器发生不可预期的错误,缓存可以用,503 请求未完成,服务器临时过载或宕机,一段时间后可能恢复正常)
HTTP连接类型
持久连接(http1.1版本才支持)
当Keep-ailve模式(又称持久连接、连接重用)时,客户端到服务器端的连接持续有效,避免后续请求时,重新建立连接- 非持久连接(默认的“请求-应答”模式)
非Keep-ailve模式时,每个请求/应答客户端和服务器都要新建一个连接,完成后就断开
http协议类—-管线化
请求打包发送,响应打包返回
在使用持久连接的情况下,某个连接上的传递类似于
请求1->响应1->请求2->响应2->请求3->响应3
在管线化下就变成类似于
请求1->请求2->请求3->响应1->响应2->响应3