HTTP协议知识总结

1.HTTP协议的主要特点

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
http协议没法保存客户机信息,也就没法区分每次请求的不同之处。关于http无状态阻碍了交互式应用程序的实现。比如记录用户浏览哪些网页、判断用户是否拥有权限访问等。HTTP无状态的特性严重阻碍了这些交互式应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。Cookie是客户端的存储空间,由浏览器来维持。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

2.HTTP报文的组成部分

请求报文:请求行、请求头、空行、请求体
响应报文:状态行、响应头、空行、响应体

3.HTTP方法

GET–获取资源
POST–传输资源
PUT–更新资源
DELETE–删除资源
HEAD–获得报文首部

4.GET和POST的区别

  1. GET在浏览器中回退时是无害的,而POST会再次提交请求
  2. GET请求在URL中传送传参的长度是限制的2kb,而POST没有限制
  3. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
  4. GET请求会被浏览器主动缓存,而POST不会,除非手动设置
  5. GET参数通过URL船体,POST放在Request body中
  6. GET比POST更不安全,因为参数暴露在地址栏上,所以不能用来传递敏感信息
  7. GET请求只能进行url编码,而POST支持多种编码方式
  8. GET产生的URL地址可以被收藏,而POST不可以
  9. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制

5.HTTP状态码

1XX:指示信息–表示请求已接收,继续处理
2XX:成功–表示请求已被成功接收
3XX:重定向–要完成氢气必须进行更进一步的操作
4XX:客户端错误–请求有语法错误或请求无法实现
5XX: 服务器有错误–服务器未能实现合法的请求
举例:
200:客户端请求成功
206:Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它
301:所请求的页面已经转移至新的url
302:所请求的页面已经临时转移至新的url
304:客户端有缓冲的文档并发出了一个条件下的请求i,服务器告诉客户,原来缓冲的文档还可以继续使用
400:客户端有语法错误,不能被服务器所理解
401:请求未经授权,这个状态码必粗和WWW-Authenticate报头域一起使用
403:对被请求页面的访问被禁止
404:请求资源不存在
500:服务器发生不可预期的错误原来缓冲的文档还可以继续使用
503:请求未完成,服务器临时过载或宕机,一段时间后可能恢复正常

6.HTTP的持久连接

HTTP协议采用“请求-应答”模式,当时有普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要建立一个连接,完成之后立即断开连接(HTTP协议无连接的协议)
当使用Keep-Alive模式(持久连接、连接重用)时,Keep-Alive功能是客户端到服务器的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接
http 1.1中默认启用Keep-Alive,如果加入"Connection: close ",才关闭
Keep-Alive的应用:
Keep-Alive: timeout=5, max=100
timeout=5表示这个TCP通道可以保持5秒
max=100,表示这个长连接最多接收100次请求就断开。
Http1.0和Http1.1中
Http1.0:默认Keep-Alive时关闭的,需要在Header头中添加Connection: Keep-Alive启用。
Http1.1:默认启用Keep-Alive,加入Connection: close才关闭。

7.HTTP的管线化

在这里插入图片描述

  1. 那么持久连接和管线化的区别在于:

持久连接的一个缺点是请求和响应式是顺序执行的,只有在请求1的响应收到之后,才会发送请求2,而管线化不需要等待上一次请求得到响应就可以进行下一次请求。实现并行发送请求。

  1. 只有GET和HEAD要求可以进行管线化,而POST则有所限制

  2. 初次创建连接时也不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议。

  3. HTTP1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败,而且现在很多服务器端和代理程序对管线化的支持并不好,现代浏览器Chrome和Firefox默认并未开启管线化支持。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值