HTTP

一、HTTP常见状态码

按第一个数字分类:1表示信息,2表示成功,3表示重定向,4表示客户端错误,5表示服务器错误

状态码 含义
200 OK 请求成功。一般用于get和post请求
301 Moved Permanently 永久移动。请求的信息已经被移动到新的URI,会返回新的URI
302 Found 临时移动。资源只是临时被移动,客户端继续使用原URI
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码,不会返回任何资源
400 Bad Request 客户端请求的语法错误,服务器无法理解(产生原因:前端提交的数据在后台找不到与之相对应的实体)
401 Unauthorized 当前请求需要用户验证
403 Forbidden 服务器已经收到请求,但拒绝执行
404 Not Found 服务器无法根据用户的请求找到资源
500 Internal Server Error 服务器内部错误,无法完成请求

二、HTTP的首部有哪些?

  • 通用首部:表示一些通用信息,如date表示报文创建时间
  • 请求首部:请求报文独有,如cookie、If-Modified-Since
  • 响应首部:响应报文独有,如set-cookie、Last-Modified
  • 实体首部:描述实体部分,如allow用来描述可执行的请求方法、content-type描述主体类型、content-Encoding描述主体的编码方式

三、HTTP支持的方法

方法 作用
get 请求指定的页面信息并返回响应主体,一般用于数据的读取
post 向指定资源提交数据,请求服务器去处理
head 获取服务器的响应头信息,常用于客户端查看服务器的性能
options 请求服务器返回该资源所支持的所有HTTP请求方法,常用于客户端查看服务器的性能
put 向指定资源位置上传其最新内容
delete 请求服务器删除所请求URI所标识的资源
connect 将连接改为管道方式的代理服务器,常用于SSL加密服务器与非加密的HTTP代理服务器的通信
trace 请求服务器回显其收到的请求信息,常用于HTTP请求的测试或诊断

四、get和post有什么区别?

get和post本质上就是TCP链接,并无差别,但由于HTTP的规定和浏览器、服务器的限制,导致它们在应用过程中有一些不同:

  • get参数通过URL传递;post放在request body中
  • get请求在URL中传递的参数有长度限制;post没有(HTTP协议未规定,是因为浏览器和服务器的限制)
  • get请求只能进行URL编码;post请求有多种编码方式
  • get请求参数会被完整保留在浏览历史记录里;post中的参数不会被保留
  • get产生一个TCP数据包;post产生两个TCP数据包
  • 对于get请求,浏览器将http header和data一并发送,服务器响应200 OK;对于post请求,浏览器先发送header,服务器响应100 Continue,浏览器再发送data,服务器响应200 OK
  • 缓存方面:get请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存;post请求一般做的是修改和删除工作,必须与数据库交互,所以不能使用缓存

五、http2.0的新特点

  • 基于HTTPS天然具有安全性
  • 二进制分帧层:将所有传输信息分割成更小的信息或帧,并进行二进制编码(http2.0性能增强核心)
  • 允许多路复用:基于二进制分帧层,在共享TCP连接的基础上,同时发送请求和响应。HTTP消息被分解为独立的帧,而不破坏消息本身的语义,交错发送出去,最后在另一端根据流ID和首部将他们重新组合起来
  • 服务器推送:服务端根据客户端的请求,提前返回多个响应,推送额外的资源给客户端,支持缓存(遵循同源策略;基于客户端的请求响应来确定的)

六、HTTP缓存机制

  1. 两种缓存方式,根据响应的header内容来决定

  2. 强缓存(状态码:200):浏览器不向服务器发送任何请求,直接从本地缓存中读取文件并返回(相关字段:Cache-Control、Expires)

  3. 协商缓存(状态码304):浏览器发送请求到服务器,通过服务器来告知缓存是否可用(相关字段:Last-Modified/If-Modified-Since、Etag/If-None-Match)

  4. 缓存相关header
    Cache-Control、Expires、Last-Modified/If-Modified-Since、Etag/If-None-Match

  5. 流程

参考:面试精选之http缓存

powered by Gitbook最后修订时间: 2020-05-15 10:33:50

results matching ""

    No results matching ""