Http请求处理

1:http请求状态码有哪些?

1xx: 请求处理中
2xx:请求成功
3xx:重定向相关
4xx:客户端错误
5xx:服务器错误

200请求成功

301请求永久重定向
302请求临时重定向,一般指请求的资源临时重定向到新的url
303请求临时重定向,一般只需要客户端重新通过get请求获取
304请求命中浏览器的缓存,下面会介绍浏览器的缓存机制
307请求临时重定向,但不会改变请求的方式

400请求报文中存在语法错误
401unauthorized未经许可,需要经过http认证
403forbidden,服务器拒绝该次访问
404资源未找到,也用于服务器拒绝该请求但不想给出拒绝原因

500服务器内部错误(服务器返回空指针异常)
502网关错误(比如nginx访问上游服务时,服务正在重启)
503服务暂时不可用
504网关超时(比如nginx访问上游服务时,服务进行了一个耗时任务)

2:浏览器的缓存机制介绍:

浏览器的缓存机制有两种
1:强缓存
当浏览器向服务器发送请求的时候,服务器会将缓存规则放在响应头中和请求结果一起返回给浏览器,控制缓存规则的字段是expires和cache-control字段,cache-control的优先级别expires高;

  • expires http1.0用来控制缓存策略的字段,代表服务器返回给浏览器请求资源缓存的过期时间,浏览器下次发起请求时会判断缓存是否过期,但是该字段存在客户端和服务器时间不一致;
  • 为了解决expires存在的问题,http1.1提出了cache-control的缓存策略
    1)public 所有内容都将被缓存(客户端或者代理服务器)
    2)private 默认只有客户端可以缓存内容(默认值)
    3)no-cache 客户端缓存,但是否使用缓存由协商缓存策略决定
    4)no-store 所有内容都不缓存,不使用强制缓存也不使用协商缓存
    5)max-age=xxx 缓存内容将在xxx秒后失效

2:协商缓存
控制协商缓存的字段有last-modified/if-modified-since和etag/if-none-match,如果协商缓存生效,返回304;如果不生效,返回200和新的资源内容;
last-modified:服务器返回资源的最后修改时间,通过响应头返回给浏览器;
if-modified-since:浏览器下次发起请求时会带上上次服务返回的last-modified时间,服务收到该时间后会和该资源最新修改的时间进行对比,如果最新修改的时间大于该时间,缓存失效,返回最新内容,状态码为200;不大于该时间,缓存生效,状态码为304;
etag:服务返回的资源的唯一标识
if-none-match:同if-modified-since

3:缓存存在哪里

size字段标识缓存存放的位置,有from memory cache和from disk cache两种
from memory cache:内存中的缓存
from disk cache:硬盘的缓存

4:输入url之后发生了什么?
  1. 从缓存中查找资源(强缓存),如果找到了直接跳到步骤3
  2. dns解析,如果缓存中能够查找到ip,跳过该步骤
  3. 建立tcp连接:三次握手
  4. 建立连接后发送http请求
  5. 服务器处理请求并返回响应
  6. 浏览器解析请求到的资源
  7. 断开连接:四次挥手
5:3次握手
6:4次挥手

你可能感兴趣的:(笔记,http)