2020-11-02 http面试题集合

2020-11-02 http面试题集合

1、HTTP与HTTPS协议:
HTTP协议,超文本传输协议,是一种基于请求响应、无状态、应用层的协议,常基于TCP/IP协议传输数据,基于请求-响应的方式在客户端和服务端进行通信
缺点:
一是以明文的方式进行传输,内容有可能被窃听
二是没有验证通信方的身份,可能遭遇伪装
三是无法证明报文的完整性,可能被篡改
HTTPS协议,是添加了加密、认证机制和完整性保护的HTTP
HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替
HTTPS协议流程:
1)客户端发起HTTPS请求
2)服务端响应,下发证书(公开密钥证书)
3)客户端检查证书,如果证书没有问题,就生成一个随机值,用证书对随机值进行加密
4)将加密的随机值发送到服务端,以后客户端和服务端就可以通过这个随机值进行加密解密了
5)服务端用私钥解密后得到客户端传来的随机值,然后进行对称加密,传给客户端

2、HTTP状态码:
1)1**:信息,服务器收到请求,需要请求者继续操作
2)2**:成功,操作被成功接收并处理,200
3)3**:重定向,304当协商缓存命中时会返回这个状态码,301永久性转移,302临时性转移
4)4**:客户端错误,400请求参数错误,401认证信息,403拒绝访问,服务器上没有配置权限,404请求资源错误,405禁止该方法
5)5**:服务端错误,500

3、get与post的区别:
1)从缓存的角度:get一般浏览器会主动缓存,post默认不能
2)从参数的角度:get一般放在URL中,因此不安全,post一般放在请求体中,因此相对安全
3)从编码的角度:get只接受ASCII码,post支持更多不受限制
4)get请求会一次性发送请求报文,post通常分为两个TCP数据包,首先会发送header部分,服务器响应100在发送body部分

4、输入URL到浏览器会发生什么
1)DNS解析域名为对应的ip地址
2)建立TCP连接
3)发起HTTP请求
4)浏览器拿到响应请求并解析
5)浏览器调用相关API渲染页面

5、浏览器如何构建和渲染页面
首先,浏览器会把HTML解析成DOM树
然后,将CSS解析成CSSOM规则树
再将两者合并成渲染树Render Tree
最后,调用相关的API渲染

6、TCP与UDP的区别:
1)TCP面向连接,UDP面向非连接
2)TCP可靠,UDP不可靠
3)TCP传输大量数据,UDP少量
4)TCP传输慢,UDP传输快

7、什么是同源策略限制,跨域有哪些
同源策略:是一个安全策略,所谓的同源是指协议、端口、域名都相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本在没有明确授权的情况下不能读取对方的资源
同源策略限制的内容有:
Cookie、LocalStorage、IndexedDB等存储性内容
DOM节点
AJAX请求发送后,非同源会被浏览器拦截
但是有三个标签允许跨域加载资源

<img src=XXX>
<link href=XXX>
<script src=XXX>  JSONP的来源

跨域方式:
CORS:全称跨域资源共享(Cross Origin Resource Sharing),允许想浏览器发出XMLHttpRequest请求,从而克服AJAX只能同源使用的限制,服务端实现cors接口,浏览器发出请求分为简单请求和非简单请求,简单请求会在头信息增加origin字段,如果origin在指定的域名许可范围内Access-Control-Allow-Origin;非简单请求会预先发出一个opinion请求,检查是否允许通信,如果允许会会在发出HTTP请求
JSONP:使用srcipt脚本带上回调函数实现的
Nginx:大型项目,webpack配置反向代理

8、浏览器缓存
当浏览器请求网页时,会检查是否有缓存,缓存是否过期等
缓存分为强缓存和协商缓存
强缓存:浏览器不会向服务器发出任何请求,会直接从本地缓存中读取文件
协商缓存:向服务器发出请求,服务器会根据这个请求头的一些参数来判断是否命中协商缓存,如果命中则返回304状态码并带上新的请求头通知浏览器从缓存中读取资源
cookie和session的区别:
1)都是会话技术,cookie运行在客户端,session运行在服务端
2)cookie有大小限制,一般4k左右,session没有大小限制与服务器内存有关
3)cookie有安全隐患,通过拦截或本地文件得到得到cookie后可以攻击
4)session是保存在服务器上一段时间后会消失,所以会增加服务器的压力
5)cookie用于保存不重要的用户信息,session用于保存重要的信息

9、TCP三次握手和四次挥手
TCP三次握手:客户端和服务端都需要直到各自可收发
第一次,客户端发送报文段,服务端接收,并确认自己的接收能力正常和客户端发送能力正常
第二次,服务端发送报文段,客户端接收,并确认自己的接收、发送能力正常和服务端的发送、接收能力正常
第三次,客户端发送报文段,服务端接收,并确认发送、接收能力正常和客户端的发送、接收能力正常
四次挥手:
第一次:客户端发送FIN包给服务端,用来关闭客户端和服务端的数据传送
第二次:服务端收到客户端的FIN包后,发送一个ACK包给客户端确认序号为收到序号+1
第三次:服务端发送一个FIN包给客户端,用来关闭服务端与客户端的数据传送
第四次:客户端收到服务端的FIN包,发送一个ACK包给服务端,确认序号为收到序号+1
至此,四次挥手完成

持续更新…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值