既然前面我们了解了计算机网络是什么计算机网络的层次结构计算机网络层次结构之间的工作方式。也了解了什么是DNS解析服务【没看过的小伙伴可以去看看哈】那么这一篇文章我们就去尝试着深入刨析一下HTTP首先是介绍了HTTP常用的状态码以及含义针对不同的含义面试官可能会通过对比的去问的方式来考察面试者的掌握程度接着是考察了HTTP有哪些请求的方式请你说说每种请求方式的特点以及作用请你说说你对于get方法的理解幂等性长度限制与post的区别首先我们先从简单的聊起先谈谈你都知道哪些HTTP的状态码吧说说 HTTP 常用的状态码及其含义HTTP 状态码用于表示服务器对请求的处理结果可以分为 5 种【主要就是下面这5种】1xx 服务器收到请求需要进一步操作例如 100 Continue。2xx 请求成功处理例如 200 OK。3xx 重定向需要进一步操作以完成请求例如 304 Not Modified 表示资源未修改客户端可以使用缓存。4xx 客户端错误请求有问题例如404 Not Found 表示资源不存在。5xx 服务器错误例如500 Internal Server Error 表示服务器内部错误。我们见到比较多的就是404200这种作为后端开发人员肯定是不希望看到5xx服务器报错的信息的因为这通常代表着今晚又要加班了现在罗列一下常见的HTTP状态码需要自取emmmm说一下301和302的区别是什么301代表的是资源已经被永久移动了在返回的时候会返回新的资源地址302代表的是资源临时性移动服务器从另外的地址响应资源但是客户端还应该使用这个地址。这里可能这么讲会有点蒙圈看下面的讲解浏览器的行为书签与历史记录浏览器遇到 301 时可能会自动更新你收藏的书签并把新URL存入历史记录。而对 302浏览器会保留旧的URL。后续请求对于 301浏览器可以而且通常会永久缓存这个重定向规则。下次你再访问旧URL浏览器会直接跳去新URL不再询问服务器。但遇到 302浏览器每次还是会先请求旧URL除非服务器有特殊的短暂缓存指令。如果还是不理解301 像搬家换了常住地址你会通知邮局把所有信件永久转送到新地址。302 像你临时外出请邻居代收一下今天的快递但告诉快递员你的固定地址没变以后照常送。既然你知道了HTTP有哪些状态码那么你知道HTTP有哪些请求方式吗HTTP 有哪些请求方式HTTP 协议定义了多种请求方式用以指示请求的目的。常见的请求方式有 GET、POST、DELETE、PUT。GET请求检索指定的资源。这里应该保证数据的幂等性因为get多次请求同一个位置的资源那么理论上每次请求的资源应该都是一样的并且请求之后资源的状态也是不会发生改变的POST向指定资源提交数据请求服务器进行处理如提交表单或上传文件。数据被包含在请求体中。可能会创建新的资源或修改现有资源。DELETE删除指定的资源。PUT用于替换指定的资源。如果指定的资源不存在创建一个新资源。后面这四种以了解为主开发当中主要用的就是前四种方式HEAD类似于 GET 请求只不过返回的响应中没有具体的内容用于获取报头。可以用于检查资源是否存在验证资源的更新时间等。OPTIONS用于获取服务器支持的 HTTP 请求方法。通常用于跨域请求中的预检请求CORS。TRACE回显服务器收到的请求主要用于测试或诊断。但由于安全风险可能暴露敏感信息很多服务器会禁用 TRACE 请求。CONNECT建立一个到目标资源的隧道通常用于 SSL/TLS 代理用于在客户端和服务器之间进行加密的隧道传输。那你讲了这么多我有个问题就是get方法可以实现写操作吗可以是可以这么做但是不太建议使用GET 执行写操作可能导致严重的安全问题如跨站请求伪造CSRF。实际开发中也应该杜绝使用 GET 方法执行写操作。在技术派实战项目中我们会在接口上明确规定应该使用哪种请求方式。那行你刚刚提到了幂等性那你说说什么是幂等性什么是幂等幂等方法了解哪些幂等其实是一个数学上的概念在这里主要是用来描述业务开发场景当中的一些特性比如一个操作无论执行多少次结果都不会随着操作次数的增加而发生变化换句话说幂等操作可以重复执行而不会改变系统状态。因此如果当前的操作是幂等的操作一次和操作多次的结果都是一样的那你说了这么多有关于get方法的那请你说一下post吧说⼀下 GET 和 POST 的区别GET 请求主要用于获取数据参数附加在 URL 中存在长度限制且容易被浏览器缓存有安全风险而 POST 请求用于提交数据参数放在请求体中适合提交大量或敏感的数据。另外GET 请求是幂等的多次请求不会改变服务器状态而 POST 请求不是幂等的可能对服务器数据有影响。你刚刚提到了get长度的限制那么你能说说get长度的限制是多少吗HTTP 中的 GET 方法是通过 URL 传递数据的但是 URL 本身其实并没有对数据的长度进行限制真正限制 GET 长度的是浏览器。本身我的URL不会去限制get的长度但是浏览器会去进行一个限制的操作例如 IE 浏览器对 URL 的最大限制是 2000 多个字符大概 2kb 左右像 Chrome、Firefox 等浏览器支持的 URL 字符数更多其中 FireFox 中 URL 的最大长度限制是 65536 个字符Chrome 则是 8182 个字符。这个长度限制也不是针对数据部分而是针对整个 URL。