重新学习HTTP协议
/ / 点击 / 阅读耗时 5 分钟HTTP协议的主要特点
简单 快速灵活 无连接 无状态
HTTP方法
get: 获取资源
post: 传递资源
put: 更新资源
delete: 删除资源
head: 获得报文头部
POST 和 GET 的区别
1、get在浏览器回退时是无害的,而post会再次提交请求
2、get产生的url可以被浏览器收藏,而post不可以
3、get请求会被浏览器自动缓存,而post不会,除非手动设置
4、get请求只能进行url编码,而Post支持多种编码方式
5、get请求参数会完整的保留在浏览器历史记录里,而post的参数不会保留
6、get请求URL中传递的参数有长度限制,一般为2kb,每个浏览器不一样,而post没有限制
7、get因为参数暴露在url上,所以不能传递敏感信息
8、get通过url传递参数,而post通过request body传递参数
HTTP状态码
200 ok: 客户端请求成功
206 Partial Content: 浏览器发送了一个带有Range头的get请求,例如video, audio等
301 Moved Permanently: 所请求的页面已转移到新的url
302 Found: 所请求的页面已临时转移到新的url
304 Not Modified: 浏览器有缓冲的文档并发出了一个条件性请求,服务器告诉浏览器,原来缓存的文档还可以继续使用
400 Bad Request: 客户端请求有语法错误,不能被浏览器解析
401 Unauthorized: 请求未经授权,必须与WWW-Authenticate一起使用
403 Forbidden: 所请求的页面被禁止
404 Not Found: 请求资源没找到
500 Internal server error: 服务器发生不可预期的错误
503 Server Unavailable: 请求未完成,服务器临时宕机,一段时间后可能恢复
什么是持久化链接
HTTP请求采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答,客户端与服务器都要新建一个连接,完成之后立刻断开:
HTTP协议为无状态协议
当使用Keep-Alive模式(持久连接)时,客户端与服务器建立的连接持续有效,当有后续的请求时,Keep-Alive避免了重新建立连接。
Keep-Alive在http1.1版本开始支持
什么是管线化
当时启用Keep-Alive的情况下,连接的请求类似如下:
请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3
使用了管线化后,变成了:
请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3
管线化技术通过持久化链接完成,仅http1.1支持此技术。
只有GET和HEAD支持管线化,而POST有所限制。