HTTP状态码
- 1XX:信息状态码
-
- 100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
- 2XX:成功状态码
-
- 200 OK 正常返回信息
- 201 Created 请求成功并且服务器创建了新的资源
- 202 Accepted 服务器已接受请求,但尚未处理
- 3XX:重定向
-
- 301 Moved Permanently 请求的网页已永久移动到新位置。
- 302 Found 临时性重定向。
- 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
- 304 Not Modified 自从上次请求后,请求的网页未修改过。
- 4XX:客户端错误
-
- 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
- 401 Unauthorized 请求未授权。
- 403 Forbidden 禁止访问。
- 404 Not Found 找不到如何与 URI 相匹配的资源。
- 5XX: 服务器错误
-
- 500 Internal Server Error 最常见的服务器端错误。
- 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
常见状态码
- 200 成功
- 301 永久重定向(配合location,浏览器自动处理)
- 302 临时重定向(配合location,浏览器自动处理)
- 304 资源未被修改
- 403 没有权限访问,一般做权限角色
- 404 资源未找到
- 500 Internal Server Error服务器内部错误
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout网关超时
502 与 504 的区别
这两种异常状态码都与网关 Gateway 有关,首先明确两个概念
- Proxy (Gateway),反向代理层或者网关层。在公司级应用中一般使用 Nginx 扮演这个角色
- Application (Upstream server),应用层服务,作为 Proxy 层的上游服务。在公司中一般为各种语言编写的服务器应用,如 Go/Java/Python/PHP/Node 等
- 此时关于 502 与 504 的区别就很显而易见
-
- 502 Bad Gateway:一般表现为你自己写的「应用层服务(Java/Go/PHP)挂了」,或者网关指定的上游服务直接指错了地址,网关层无法接收到响应
- 504 Gateway Timeout:一般表现为「应用层服务 (Upstream) 超时,超过了 Gatway 配置的 Timeout」,如查库操作耗时三分钟,超过了 Nginx 配置的超时时间
http headers
- 常见的Request Headers
-
- Accept 浏览器可接收的数据格式
- Accept-Enconding 浏览器可接收的压缩算法,如gzip
- Accept-Language 浏览器可接收的语言,如zh-CN
- Connection:keep-alive 一次TCP连接重复复用
- Cookie
- Host 请求的域名是什么
- User-Agent(简称UA) 浏览器信息
- Content-type 发送数据的格式,如application/json
- 常见的Response Headers
-
- Content-type 返回数据的格式,如application/json
- Content-length 返回数据的大小,多少字节
- Content-Encoding 返回数据的压缩算法,如gzip
- set-cookie
- 缓存相关的Headers
-
- Cache Control、Expired
- Last-Modified、If-Modified-Since
- Etag、If-None-Match
从输入URL到显示出页面的整个过程
- 下载资源:各个资源类型,下载过程
- 加载过程
-
- DNS解析:域名 => IP地址
- 浏览器根据IP地址向服务器发起HTTP请求
- 服务器处理HTTP请求,并返回浏览器
- 渲染过程
-
- 根据HTML生成DOM Tree
- 根据CSS生成CSSOM
- DOM Tree和CSSOM整合形成Render Tree,根据Render Tree渲染页面
- 遇到<script>暂停渲染,优先加载并执行JS代码,执行完在解析渲染(JS线程和渲染线程共用一个线程,JS执行要暂停DOM渲染)
- 直至把Render Tree渲染完成