HTTP协议类
HTTP协议的主要特点
简单快速 每个资源是固定的URI
灵活 通过一个HTTP协议可以完成不同的数据类型的传输
无连接 连接一次就会断开,不会保持连接
无状态 客户端和服务端是两种身份,一次连接后就断开,下次再连接,服务端无法区分两次是否由同一客户端发起的请求
HTTP报文的组成部分
请求报文
请求行 http方法、页面地址、http协议以及版本
请求头 key:value值 告诉服务端我要什么内容要注意什么 类型
空行 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头 不是请求头的部分了
请求体 空行是用来分隔请求头和请求体
响应报文
状态行
响应头
空行
响应体
HTTP方法
类别
GET获取资源
POST传输资源
PUT更新资源
DELETE删除资源
HEAD获取报文首部
post与get的区别
! get在浏览器回退时是无害的,post会再次提交
get产生的url地址可以被收藏,post不可以
! get请求自动被浏览器缓存,post不会,除非手动设置
get请求只能进行url编码,post支持多种
! get请求参数会被完整保留在浏览器历史记录里,post中的参数不会被保留
! get请求在url中传送的参数是长度限制的(2kb),post没有
对参数的数据类型,get只接受ascii码,post没有
get比post更不安全,因为参数直接暴露在url上
! get参数通过url传递,post放在Request body中
HTTP状态码
1xx 指示信息 表示请求已接收,继续处理
2xx 成功 表示请求已被成功接收
3xx 重定向 要完成请求必须进行更进一步的操作
4xx 客户端错误 请求有语法错误或者请求无法实现
5xx 服务器错误 服务器未能实现合法的请求
eg
200 OK
206 Partical OK
301 Moved Permanently 转移到新的url
302 Found 临时转移到新的url
304 Not Modified
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error
503 Server Unavailble
持久连接
请求-应答模式
HTTP协议采用“请求-应答”模式,当使用普通模式时,每个请求/应答客户和服务器都要建立一个连接,完成之后立即断开连接
Keep-alive模式
使用“keep-alive”模式(持久连接/连接重用)时,keep-alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-alive功能避免了建立或者重新连接 1.1+支持
管线化
在使用持久连接的情况下,某个连接上消息的传递类似于:
请求1->响应1->请求2->响应2->请求3->响应3
某个连接上的消息变成了
请求1->请求2->请求3->响应1->响应2->响应3
特点
管线化机制通过持久连接完成,仅http/1.1支持
只有get和head请求可以进行管线化,post有所限制
初次创建连接时不应启动管线化机制,因为服务器不一定支持http/1.1版本的协议
管线化不会影响响应到来的顺序,响应返回的顺序并未改变
http/1.1要求服务端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败
chrome和firefox默认未开启管线化支持