华为od 面试八股文_计算机网络_02_含答案

目录

一、简单说一下HTTP报文段

二、POST和PUT区别?

三、POST和GET区别?

四、HTTP连接方式有哪些?

五、HTTP状态码?

六、HTTP连接和socket连接的区别?

七、HTTP rest是什么?

八、HTTP缓存类型及缓存寿命?

九、HTTP为什么是无状态的?

十、cookie、session和token的区别?


一、简单说一下HTTP报文段

请求报文:请求行(请求方法、URL、协议版本)、请求头、空行、实体体。

常见头:Host、User-Agent、Connection、Accept-Charset、Accept-Encoding、Accept-Language

响应报文:状态行(协议版本、状态码、状态码描述)、响应头、空行、实体体。

常见头:Date、Server、Connection、Cache-Control、Content-Type、Content-Length、Content-Charset、Content-Encoding、Content-Language

请求方法中增删改查分别是:POST、DELETE、PUT、GET

二、POST和PUT区别?

PUT 和 POST 的区别主要在以下几个方面:

  1. 语义不同:PUT 请求通常用于更新或替换服务器上的资源,而 POST 请求通常用于创建新的资源或提交数据到服务器进行处理。
  2. 客户端发送的数据不同:PUT 请求需要客户端发送完整的资源内容,而 POST 请求可以只发送部分资源内容。
  3. 响应不同:PUT 请求成功后通常返回 200 OK 状态码,而 POST 请求成功后通常返回 201 Created 状态码,并返回表示新资源的 URI。
  4. 幂等性不同:PUT 请求具有幂等性,即执行多次 PUT 请求的结果应该相同,而 POST 请求不具有幂等性。

总之,PUT 和 POST 请求有些相似之处,但也有一些其他的区别:

  1. 安全性不同:PUT 请求是安全的,即对服务器上的资源的任何操作都不会导致状态的改变。而 POST 请求不是安全的,它可能会导致状态的改变。
  2. 可缓存性不同:PUT 请求是可缓存的,客户端可以使用缓存的响应来更新资源。而 POST 请求不是可缓存的,客户端不能使用缓存的响应来更新资源。
  3. 使用场景不同:PUT 请求适用于更新完整的资源,比如更新用户信息、文章内容等。而 POST 请求适用于提交数据到服务器进行处理,比如创建新的文章、提交表单等。

在使用 PUT 和 POST 请求时,需要注意它们的区别,选择合适的请求方法来处理不同的业务场景。

除了 PUT 和 POST,HTTP 协议还定义了其他的请求方法,比如 GET、DELETE、OPTIONS 等。每种请求方法都有自己的语义和应用场景,在使用时需要仔细考虑。

在实际的设计中,需要根据资源的性质和业务场景来选择合适的请求方法。如果要更新整个资源,应该使用 PUT 请求;如果要创建新的资源或提交数据到服务器进行处理,应该使用 POST 请求。同时,应该遵循 RESTful API 的设计规范,为资源命名、定义 URI、选择合适的 HTTP 方法等。

三、POST和GET区别?

应用场景:GET用于对服务器资源不会产生影响的场景(如请求一个网页的资源);POST相反(如注册)

是否缓存:浏览器一般会缓存GET请求,但很少缓存POST请求

传参方式:GET通过查询字符串传参,POST通过请求体传参

安全性:GET可将请求参数放入URL中向服务器发送,会被保留在历史记录中,不安全

请求长度:由于浏览器对URL长度限制,会影响GET发送数据的长度

参数类型:GET只允许ASCII字符,而POST连文件、图片都能传

四、HTTP连接方式有哪些?

长连接、短连接。

HTTP/1.0中默认使用短连接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

HTTP/1.1起默认使用长连接,请求头会有Connection: keep-alive

五、HTTP状态码?

1xx:服务器收到请求,需要请求者继续操作

2xx:成功

3xx:资源重定向(301:永久移动;302:临时移动)

4xx:客户端请求出错(404:请求资源不存在)

5xx:服务端出错(500:服务器内部错误)

六、HTTP连接和socket连接的区别?

HTTP连接=以HTTP协议为通信协议的TCP连接

HTTP协议是应用层的,而socket是对TCP/IP协议的封装和应用,是一个API。

七、HTTP rest是什么?

定义:Web Service架构。通过语义化方式请求资源URL,解决URL膨胀问题(如GET会把各种操作附加到URL)。

作用:通过URL知道要什么资源,通过HTTP method知道要干什么,通过状态码知道结果如何。

优点:风格统一(不会出现乱七八糟的命名)、面向资源、充分利用HTTP本身语义

八、HTTP缓存类型及缓存寿命?

私有缓存(单独用户,常见的浏览器缓存)、共享缓存(多个用户,常用web代理)

缓存寿命计算依据依次为:cache-control>expires>last-modified

九、HTTP为什么是无状态的?

无状态指的是不会记录客户状态信息,即每个“请求-响应”都独立。传统静态页面,前后请求不需要关联。

如何使HTTP有状态?cookie。

十、cookie、session和token的区别?

cookie是存储在浏览器端的用户数据(随HTTP请求发送给服务端)。

session是存储在服务端的,而session id存储在cookie中。第一次创建session时,在cookie里记录session id,以后每次请求把cookie发送到服务器时,服务器看到这个id,就知道客户机来了。

token代表一小段字符串,很多地方都有。

猜你喜欢

转载自blog.csdn.net/misayaaaaa/article/details/143260570