http重点面试题

156 阅读8分钟

前端工程师做出网页,需要通过网络请求向后端获取数据,因此http协议是前端面试的必考内容。主要考点为:http协议状态码、header、method、缓存等。特别是http缓存策略,非常重要。

一、http常见的http状态码有哪些

1xx(信息性状态码):表示服务器已经接收到请求,正在处理中。
100 Continue: 表示服务器已经接收到请求头,并且客户端应该继续发送请求主体(通常在POST请求中使用)
101 Switching Protocol: 表示服务器已经理解客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成请求。
2xx(成功状态码): 表示服务器已经成功接收、理解并处理了请求。
200 OK:表示请求已成功,且服务器已返回请求的数据。
201 Created:表示请求已成功处理,并且服务器已经创建了新的资源。
202 Accepted:表示服务器已经接收请求,但是还没有处理完成。
204 No Content:表示请求已经成功,但是服务器没有返回任何内容。
3xx(重定向状态码):表示客户端需要执行某些额外的操作才能完成请求。
301 Moved Permanently:表示请求的资源已经永久移动到新的位置。
302 Found:表示请求的资源已经暂时移动到新的位置。
304 Not Modified:表示客户端缓存的资源是最新的,无需重新获取。
307 Temporary Redirect:表示请求的资源已经暂时移动到新的位置。
4xx(客户端错误状态码):表示客户端发生了错误。
400 Bad Request: 表示请求出现语法错误。
401 Unaouthorized:表示请求需要身份验证,但是客户端没有提供有效的凭据。
403 Forbidden:表示服务器拒绝了请求,因为客户端没有访问资源的权限。
404 Not Found:表示请求的资源不存在。
405 Method Not Allowed:表示请求的HTTP方法不被允许。
408 Request Timeout: 表示服务器等待请求时发生超时。
5xx(服务器错误状态码):表示服务器在执行请求时遇到了错误。
500 Internal Server Error:表示服务器在执行请求时遇到了错误。
501 Not Implemented: 表示服务器不支持请求的功能。
502 Bad Gateway: 表示服务器作为网关或代理,从上游服务器接收无效的响应。
503 Service Unavaiable: 表示服务器当前无法处理请求,可能是因为服务器过载或维护中。
504 Gateway Timeout:表示服务器作为网关或代理,等待上游服务器响应超时。

二、http常见的header有哪些?

HTTP(header)是在HTTP请求和响应消息中传输元数据的一种机制。以下是HTTP常见的header:

Accept:表示客户端能够接收的媒体类型,例如text/html、image/png等。
Accept-Encoding:表示客户端能够接收的编码方式,例如gzip、deflate等。
Accept-Language:表示客户端能够接收的语言类型,例如en-US、zh-CN等。
Cache-Control:控制缓存的行为,例如no-cache、max-age等
Connection:表示是否需要持久链接,例如keep-alive、close等
Content-Length:表示请求体或响应体的长度,单位是字节。
Content-type:表示请求体或响应体的媒体类型,例如text/html、application/json等
Cookie:表示客户端发送给服务器的cookie信息。
Host:表示请求的目标服务器的主机名和端口号。
If-Modified-Since:表示请求的资源在指定时间之后是否有更新,用于缓存控制。
Origin:表示请求的来源地址,用于跨域请求。
Referer:表示请求的来源页面地址。
User-Agent:表示客户端的浏览器类型、操作系统等信息。
Authorization:表示客户端发送给服务器的认证信息,例如基本认证、摘要认证等。
ETag:表示资源的唯一标识符,用于缓存控制。

三、什么是Restful API

RESTful API (Representational state Transfer)是一种Web API设计风格,它基于HTTP协议提供了一组可用于创建、读取、更新和删除资源的架构约束和原则。

RESTful API的核心思想是将每个资源(如用户、文章、评论等)表示为唯一的URI(统一资源标识符),并使用HTTP方法(GET、POST、PUT、DELETE等)来执行对这些资源的操作。

RESTful API的优点包括可扩展性、灵活性、可读性、可缓存性和可靠性。它们也易于使用和集成,因为它们使用标准的HTTP方法和响应代码。

例如:一个电子商务网站可能会使用RESTful API来允许用户浏览产品、添加产品到购物车、下订单等操作。 使用RESTful API时,客户端应用程序发送HTTP请求到服务器上的URI,服务器根据请求方法执行相应的操作,并返回HTTP响应。其中包含有关请求结果的信息。通常,响应以JSON或HML格式返回,这些格式易于解析和处理。

四、描述一下http的缓存机制(重要)

HTTP缓存机制是指在Web浏览器和Web服务器之间的数据传输过程中,为了提高网站性能和减少网络流量而使用的一种技术。它可以将一些常用的资源(如图片、CSS文件、JS文件等)保存在本地缓存中,以便下次访问时可以直接从本地读取,而不必再次向服务器请求资源。

1、客户端缓存: 是指浏览器已经请求过的资源保存在本地缓存中,下次访问同一资源时可以直接从本地读取。客户端缓存可以通过HTTP响应头中的Cache-Control和Expires字段来控制。

Cache-Control字段可以控制缓存类型和缓存时间,常见的字段值包括:

  • public:允许任何缓存服务器缓存该资源。
  • private:只允许客户端缓存该资源。
  • max-age:指定缓存时间,单位为秒。
  • no-cache:表示缓存该资源,但在使用前必须先向服务器验证是否有更新版本。

Expires字段可以指定资源的过期时间,即到期后必须重新从服务器获取资源。它的值时一个GMT格式的日期字符串。

2、服务器缓存: 是指Web服务器将响应保存在缓存中,下次请求同一资源时可以直接从缓存中返回响应,而不必再次生成响应。服务器缓存可以通过HTTP响应头中的Cache-Control和 Etag字段来控制。

  • Etag:是一个字符串,它代表了资源的唯一标识符。当客户端请求资源时,它会向服务器发送一个If-None-Match头,该头包含了上次请求资源时收到的ETag值。如果服务器上的资源ETag值与客户端发送的If-None-Match头的值相同,服务器会返回一个304 Not Modified响应,告诉客户端可以从缓存中读取资源。

http缓存机制流程图:

image.png

五、描述HTTPS请求过程

HTTPS(Hypertext Transfer Protocol Secure)是一种用于安全传输数据的加密协议。下面是HTTPS请求的过程:

  1. 客户端向服务器发送一个HTTP请求,这个请求时通过TCP/IP连接发送的,并且使用HTTPS协议的默认端口443.
  2. 服务器接收到请求之后,会向客户端发送一个数字证书。这个数字证书包含了服务器的公钥和其他相关信息。
  3. 客户端接收到数字证书之后,会使用数字证书中的公钥来加密一个随机数。这个随机数时用来加密HTTP请求的。
  4. 客户端将加密后的随机数发送给服务器。
  5. 服务器使用数字证书的私钥来解密客户端发送的随机数,并使用这个随机数来加密HTTP响应。
  6. 服务器将加密后的HTTP响应发送给客户端。
  7. 客户端使用之前加密的随机数来解密HTTP响应。
  8. 客户端和服务器之间的通信现在都是加密的,可以安全地传输数据。

需要注意的是:在HTTPS请求过程中,数字证书的作用非常重要。数字证书是由受信任的第三方机构颁发的,用于证明服务器的身份和可信度。客户端在接收到数字证书之后,会对其进行验证,以确保它是由受信任的机构颁发的,并且服务器的公钥可以被成功解密。如果数字证书无效或被篡改,客户端会收到一个安全警告,提示用户该网站可能存在风险,建议用户不要继续访问。

image.png