http前端面试题

733 阅读9分钟

一 你知道的 HTTP 请求方式有几种?

  1. GET

用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。

在GET请求的URL中发送查询字符串(名称/值对)

注:因GET请求的不安全性,数据会暴露在url中,在处理敏感数据时,绝不可以使用GET请求。

  1. HEAD

与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。作用是确定URL的有效性和资源更新的时间

  1. POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

  1. PUT

用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。

它会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。如果URI未指示当前资源,则服务器可以使用该URI创建资源。

  1. DELETE 请求服务器删除指定的页面。

  2. CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

用来建立到给定URI标识的服务器的隧道;它通过简单的TCP/IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

  1. OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,允许客户端查看、测试服务器性能

  2. TRACE

回显服务器收到的请求,主要用于测试或诊断。

  1. PATCH

实体中包含一个表,表中说明与该 URI 所表示的原内容的区别。

  1. MOVE

请求服务器将指定的页面移至另一个网络地址。

  1. COPY

请求服务器将指定的页面拷贝至另一个网络地址。

  1. LINK

请求服务器建立链接关系。

  1. UNLINK 断开链接关系。

  2. WRAPPED 允许客户端发送经过封装的请求。

  3. LOCK

允许用户锁定资源,比如可以再编辑某个资源时将其锁定,以防别人同时对其进行编辑。

  1. MKCOL

允许用户创建资源

  1. Extension-mothed

在不改动协议的前提下,可增加另外的方法。

二 常见 HTTP 状态码都有哪些?

100 => 正在初始化(一般是看不到的)

101 => 正在切换协议(websocket 浏览器提供的)

200 或者以 2 开头的两位数 => 都是代表响应主体的内容已经成功返回了

202 => 表示接受

301 => 永久重定向/永久转移

302 => 临时重定向/临时转移(一般用来做服务器负载均衡)

304 => 本次获取的内容是读取缓存中的数据,会每次去服务器校验

400 => 参数出现错误(客户端传递给服务器端的参数出现错误)

400 => 参数出现错误(客户端传递给服务器端的参数出现错误)

401 => 未认证,没有登录网站

403 => 禁止访问,没有权限

404 => 客户端访问的地址不存在

500 => 未知的服务器错误

503 => 服务器超负荷(假设一台服务器只能承受 10000 人,当第10001 人访问的时候,如果服务器没有做负载均衡,那么这个人的网络状态码就是 503)

三 HTTP 与 HTTPS 的区别

1、HTTPS 协议需要到 CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前网易官网是 HTTP,而网易邮箱是 HTTPS 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

四 描述一下 HTTP 的请求过程与原理

HTTP 请求的过程

域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 HTTP 请求 -->服务器响应 HTTP 请求,浏览器得到 html 代码 -->浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

请求原理

HTTP 协议是应用层的一种协议,是一种 C/S 架构服务,基于 TCP/IP 协议来通信,监听在TCP 的 80 端口上,HTTP 协议实现的是客户端可以向服务端获得 web 资源

五 HTTPS 有几次握手和挥手?HTTPS 的原理什么是

HTTPS 是 3 次握手和 4 次挥手,和 HTTP 是一样的。

HTTPS 的原理

HTTPS 在传输数据前需要客户端(浏览器)与服务器(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL 协议是一套加密传输协议,使用了非对称加密,对称加密,以及 HASH 算法

HTTPS 为什么安全

因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息,而如果使用 HTTPS,密钥在你和终点站才有。HTTPS 之所以比 HTTP 安全,是因为他利用 ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer 传递等。保障了传输过程的安全性

六 HTTP2 / HTTP1 之间的区别是什么

区别

1、HTTP2 采用二进制格式而非文本格式,比起文本格式,二进制格式解析起来更加高效,并且错误少

2、HTTP2 是完全的多路复用,非有序并阻塞的----只需要一个连接即可实现并行,多路复用的意思是它能同时处理多个消息的请求和响应,HTTP1 是一个连接一次只能提交一个请求的效率比较高,多了就会变慢

3、使用报头压缩,HTTP2 降低了开销,HTTP1 的消息头很大冗余,HTTP2 是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成 frame

4、HTTP2 让服务器可以将响应主动”推送”到客户端缓存中,HTTP2 中服务器会主动将资源推送给客户端,例如把 js 和 css 文件主动推送给客户端而不用客户端解析 HTML 后请求再响应

七 HTTP优化方案

TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。

内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。

压缩:将文本数据进行压缩,减少带宽

SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速 TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。

八 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么

01.浏览器查找域名对应的IP地址(DNS 查询:浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->根域名服务器)

02.浏览器向 Web 服务器发送一个 HTTP 请求(TCP三次握手)

03.服务器 301 重定向(比如:从 example.com 重定向到 www.example.com)

04.浏览器跟踪重定向地址,请求另一个带 www 的网址

05.服务器处理请求(通过路由读取资源)

06.服务器返回一个 HTTP 响应(报头中把 Content-type 设置为 ‘text/html’)

07.浏览器进 DOM 树构建

08.浏览器发送请求获取嵌在 HTML 中的资源(如图片、音频、视频、CSS、JS等)

09.浏览器显示完成页面

10.浏览器发送异步请求

九 TCP和UDP的区别

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境

十 说说网络分层里七层模型是哪七层

物理层:通过媒介传输比特,确定机械及电气规范 

数据链路层:将比特组装成帧和点到点的传递 

网络层:负责数据包从源到宿的传递和网际互连 

传输层:提供端到端的可靠报文传递和错误恢复 

会话层:建立、管理和终止会话

表示层:对数据进行翻译、加密和压缩

应用层:允许访问OSI环境的手段