http协议

http协议

  • http协议的主要特点
    1、简单快速:可以通过一个uri(统一资源符)获取数据
    2、灵活:通过head,通过http协议可以完成不同数据类型传输
    3、*无连接:连接一次就会断
    4、*无状态:服务端是不能从http区分两次请求的
    
    

- http报文的组成部分[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmPTQjH5-1586943378018)(http://note.youdao.com/yws/res/9627/WEBRESOURCE57b9a41f10ab3f3022f712a079513b5d)]

- 请求行:请求方法/页面地址/http协议/版本
GET/HTTP/1.1
- 请求头:key/value值,告诉服务端我需要什么类型以及注意是什么类型
host:www.imooc.com
connection: keep-alive
- 空行:告诉服务端往下按照请求体解析
- 请求体:数据部分
- 状态行:协议/版本/状态
HTTP/1.1 200 0K
- 响应头:key/value值
host:www.imooc.com
connection: keep-alive
- 空行:告诉服务端往下按照响应体体解析
- 响应体:一些数据
  • http方法
get: 获取资源
post: 传输资源
put: 更新资源
delete: 删除资源
  • *post和get的区别
*1.get在浏览器回退时是无害的,但是post会再次提交请求;
2.get产生的url地址是可以被收藏的,但是post不可以;
*3.get请求会被浏览器主动缓存,而post不会,除非手动设置;
4.get请求只能进行url编码,而post支持多种编码方式;
*5.get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留;
*6.get 在url中传送的参数是有长度限制的,而post没有限制;
7.对参数的数据类型,get只接受ASCALL字符,而post没有限制;
8.get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息;
*9.get参数通过url传递,post是放在request body中
  • http状态码
1xx: 指示信息-表示请求已接收,继续处理
   
2xx: 成功-表示请求已被成功接收;
    1.206 ok: 客户端请求成功;
    2.206 partial Content: 客户端发送了一个带有Range头的GET请求,服务器完成了她;
3xx: 重定向-要完成请求必须进行更进一步操作;
    1.301 moved permanently: 所请求的页面已经转移至新的url;(永久重定向)
    2.302 Found: 所请求的页面已经临时转移至新的url;(临时重定向)
    3.304 Not Modified: 客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户,原本缓冲的文档可以继续使用

4xx: 客户端错误-请求有语法错误或请求无法实现;
    1.400 bad request: 客户端请求有语法错误,不能被服务器所理解;
    2.401 Unauthorizad: 请求未经授权,这个状态码必须和www-Authenticate报头域一起使用
    3.403 Forbidden: 对被请求的页面禁止访问;(不允许直接访问,只能通过服务器才能访问)
    4.404 not Found: 请求资源不存在;
    
5xx: 服务器错误-服务器未能实现合法的请求
    1.500 Internal Server Error : 服务器发生不可预期的错误,原来缓冲的文档还可以继续使用;
    2.503 S尔尔Unavailable: 请求未完成,服务器临时过载或当机,一段时间回恢复正常;

  • 什么是持久链接
    1.普通模式
    http协议采用"请求-应答"模式,当前使用普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要新建一个链接,完成之后立即断开连接(http为无连接的协议)

    2.持久连接

    当使用keep-Alive模式(又称持久链接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接

    注意点:
    *持久连接http1.1才支持,1.0版本不支持
    
  • 什么是管线化
    在使用持久连接的情况下,某个连接上的消息的传递是类似于:未断开,共用一个通道

请求1->响应1->请求2->响应2->请求3->响应3

管线化:通道是持久建立的,请求打包一次传输,响应也是打包后一次返回

某个连接上的消息变成了类似这样

请求1->请求2->请求3->响应1->响应2->响应3
管线化的特点:
    1.管线化通关持久连接完成,仅HTTP/1.1支持此技术
    2.只有GET和HEAD请求可以进行管线化,而POST则有所限制
    3.初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持http/1.1版本的协议
    4.管线化不会影响响应到来的顺序,如上图得到例子所示
    5.http/1.1要求服务端支持管线化,但并不要求服务端也对响应进行管线化处理,只是要求对于冠县话的请求不失败即可
    4.由于上面提到的服务端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不好,因此现代浏览器如:chrome 和 firefox默认未开启管线化支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值