1.请求方法有哪些?
http/1.1规定了以下请求方法
子问题
- 幂等是什么?
- 幂等表示多次执行相同的操作,结果是相同的
- 幂等方法有哪些?
- GET,HEAD,PUT,DELETE,OPTIONS
- 解释各方法的意义?见图。
- GET/POST的区别?
- 从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
- 从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。
- 从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。(注意)
- 从幂等性的角度,GET是幂等的,而POST不是。
- 从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。
- PUT/POST的区别?
- 一个是添加数据,一个是更新数据(幂等)。
2.HTTP状态码有哪些?你怎么理解?
RFC规定HTTP状态码为3位数,被分为五类
1xx: 表示目前是协议处理的中间状态,还需要后续操作。
2xx: 表示成功状态。
3xx: 重定向状态,资源位置发生变动,需要重新请求。
4xx: 客户端错误,如请求报文有误。
5xx: 服务器端发生错误。
子问题
- 你知道哪些状态码?列举并解释。(详见本文上方)
- 哪些是较为常见的状态码?
- 101,200,204,206,301,302,304,400,403,404,500,501,502,503
- 101 Switching Protocols 例如想将http升级为websocket/http2.0的时候,客户端发送请求头中包含Upgrade字段表示请求变更,如果服务器同意变更,就会发送状态码 101。
- 200 OK 成功返回响应。
- 204 No Content 成功返回响应,但是响应头后没有body数据。并且暗示客户端不需要更新当前的页面视图。
- 206 Partial Content 应用场景是HTTP大文件分块下载以及断点续传。是在客户端使用Range头字段时,服务端在返回206状态码的同时,会在响应头中带上Content-Range字段。
- 301 Moved Permanently 永久重定向
- 302 Found(Moved Temporarily) 暂时重定向
- 304 Not Modified 协商缓存命中时会返回这个状态码,当客户端的缓存可能过期的时候,客户端会携带etag,时间等信息,向服务端询问缓存是否可以复用,当服务端返回304时表示缓存可复用。
- 400 Bad Request 笼统的提示一下错误,且服务端认为是客户端错误所致,但具体原因不知, 例如可能是请求报文出错。
- 403 Forbidden 并不是请求报文出错,而是服务器禁止访问,法律禁止,信息敏感等。403表示服务器理解请求的含义,但没有权限执行请求,比如服务器对某个目录下的文件访问没有权限。
- 404 Not Found 资源未找到,表示没在服务器上找到相应的资源。资源可能已经丢失。
- 501 Not Implemented 表示客户端请求的功能还不支持。
- 502 Bad Gateway 502非常常见,源服务器正常,响应502通常是客户端与源服务器之间有代理服务器,而代理服务器无法获取合法响应。可能是代理服务器上设置的超时时间过小。
- 503 Service Uunavailable 表示服务器当前很忙,暂时无法响应服务。会有很多种原因,比如服务器端作了限速,或者对于客户端连接的并发限制。
由上述状态码引发的几个问题?
- 协商缓存是什么?(缓存相关)
- HTTP如何处理大文件传输?
- 代理服务器的作用?(代理相关)
- 怎么优化对于客户端并发连接限制问题?
下次再见
后续引发的几个问题,将在后续HTTP问答篇讲到。
如果你觉得还不错,就点个赞吧!有什么问题欢迎在评论区指出。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END