【细致】HTTP问答篇之请求方法与响应行

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
喜欢就支持一下吧
点赞0 分享