阅读 91

HTTP面试汇总

一、HTTP基础知识

1、HTTP是什么?

简单:超文本传输协议
传输:双向的
协议:规范与约定
超文本:包含图片、音频、视频等,不仅仅是文本


回答:HTTP是一个在计算机世界里专门在[两点]之间[传输]文字、图片、音频、视频等[超文本]数据的[协议和规范]
复制代码

2、HTTP常见的状态码

五大类
1xx:属于提示信息,是协议处理中的一种中间状态
2xx:表示服务器成功处理了客户端的请求
  200:表示一切正常
  204:响应头没有body数据
  206:表示返回的body数据并不是资源的全部,而是其中的一部分
3xx:重定向
  301:永久重定向,说明资源已经不存在,需改用新的URL再次访问
  302:临时重定向,说明资源还存在,但暂时需要用另一个URL来访问
  304:缓存重定向,不具跳转的含义,表示资源未修改,重定向已存在的缓存文件
4xx:客户端错误
  400:表示客户端请求的报文有错误,但只是个笼统的错误
  403:表示服务器禁止访问资源
  404:表示请求的资源在服务器上找不到或不存在
5xx:服务端的错误
  500:笼统的错误
  501:表示客户端请求的功能还不支持
  502:表示服务器自身工作正常,访问后端服务器发生了错误
  503:表示服务器暂时无法响应
复制代码

3、HTTP常见字段有哪些?

1.Host
  客户端发送请求时,用来指定服务器的域名
2.Content-Length字符
  表明服务器本次回应的数据长度
3.Connection字符
  常用于客户端要求服务器使用TCP持久连接,以便其他请求复用
  Connection:keep-alive(一个可以复用TCP连接就建立了,直到客户端或服务器主动关闭连接)
4.Content-Type字段
  用于服务器回应时,告诉客户端,本次数据是什么格式
  (Accept:*/*):表示所有格式
5.Content-Encoding字段
  表示服务器返回的数据使用了什么压缩格式
复制代码

4、HTTP请求方法

1.GET:通常用来获取资源
2.POST:提交数据
3.PUT:修改数据
4.DELETE:删除数据
5.CONNECT:建立连接隧道
6.HEAD:获取资源的元信息
7.TRCACE:追踪请求
复制代码

二、GET和POST

1、两者的区别

get用来获取数据,而post用来上传数据
1)从缓存的角度:get请求会被浏览器缓存下来,留下历史记录,而post默认不会
2)从编码的角度:get只能进行URL编码,只能接受ASCII编码,而post没有限制
3)从参数的角度:get一般放在URL中,不安全,而post放在请求体中,可用来传输敏感信息
4)从TCP的角度:get请求会把请求报文一次性发出去,而post会分为两个tcp数据包,首先发送header部分,如果服务器响应100,则再发body部分(火狐浏览器除外)
复制代码

2、get和post方法都是安全和幂等的吗?

1.什么是安全?
在HTTP协议里,所谓“安全”是指请求方法不会“破坏”服务器上的资源

2.什么是幂等?
意思是多次执行相同的操作,结果都是“相同”的

3.get是“安全”且“幂等”的:因为它是只读操作,无论多少次操作,服务器上的数据都是安全的,且每次的结果相同

4.post是“不安全”且“不幂等”的:因为它是新增或提交数据的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的
复制代码

三、HTTP特性

1、http的优点

最突出的优点:简单、灵活、易扩展、应用广泛和跨平台
1.简单
  HTTP基本的报文格式是header+body,头部信息也是key-value简单文本的形式,已于理解
2.灵活和易扩展
  HTTP协议里的各类请求方法、URL/URI、状态码、头字段等每个组成要求都没固定死,允许开发人员自定义和扩展
3.应用广泛和跨平台
复制代码

2、http的缺点

1.无状态(双刃剑)
  无状态:对于事务处理没有记忆能力
  (1)好处:服务器不会去记忆HTTP的状态,所以不需要额外的资源来记录状态信息,这能减              轻服务器的负担
  (2)坏处:由于对于事务处理没有记忆能力,则在完成有关联性的操作时会非常麻烦
  (3)解决办法:使用Cookie(在客户端第一次请求后,服务器会下发一个装有客户信息的「小贴纸」,后续客户端请求服务器的时候,带上「小贴纸」,服务器就能认得了)
  
2.明文传输(双刃剑)
  明文:即没有加密
  (1)好处:方便阅读
  (2)坏处:HTTP所有信息都暴露了,在传输的漫长过程中,信息很容易被窃取
 
3.不安全
  (1)使用明文传输:内容可能会被窃取
  (2)不验证通信方的身份:有可能遭遇伪装(假淘宝,钓鱼网站)
  (3)无法证明报文的完整性:有可能已遭篡改(网页上植入垃圾广告)
复制代码

3、http/1.1的性能

1.长连接
  也叫持久连接,这种方式减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载。
  其主要特点在于:只要任意一端没有明确提出断开连接,则保持TCP连接状态
  
2.管道网络传输
  同一个TCP连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。但是,服务器的响应是按顺序的,如果前面的回应特别慢,后面就会有许多请求排队等待,这称为[对头阻塞]

3.队头阻塞
复制代码

四、HTTP与HTTPS

1、两者的区别

1.HTTP是超文本传输协议,信息是明文传输,存在安全风险问题。HTTPS解决了HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了SSL/TSL安全协议,使得报文能够加密传输

2.HTTP连接建立相对简单,TCP三次握手之后便可进行报文传输。而HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程,才可进行报文传输

3.HTTP端口号是80,HTTPS的端口号是443

4.HTTPS协议需要申请数字证书,来保证服务器的身份是可信的
复制代码

2、https解决了http的那些问题

由于HTTP是明文传输,存在以下风险:
1.窃听风险
2.篡改风险
3.冒充风险
复制代码

3、https是如何解决http不安全的问题

1.混合加密的方式实现信息的机密性:解决了窃听的风险
2.摘要算法的方式实现信息的完整性:它为数据生成独一无二的“指纹”,指纹用于校验数据的完整性,解决篡改的风险
3.将服务器公钥放入到数字证书中:保证服务器的身份,解决冒充的风险
复制代码

总结

文章分类
前端
文章标签