HTTP 相关考点

262 阅读3分钟

常见的状态码有哪些?

  • 1xx 服务端接受到请求
  • 2xx 请求成功(200)
  • 3xx 资源重定向 (301 永久重定向;302临时重定向;304资源未改变,读取缓存)
  • 4xx 客户端错误 (404 资源不存在; 403 权限不足)
  • 5xx 服务端错误 (500 服务端错误;502网关超时)

HTTP headers 有哪些

  1. request headers

    • accept 能接收的格式
    • accept-encoding 能接收的压缩算法
    • accept-language 能接收的语言
    • connection: keep-alive 一次链接tcp多次使用
    • cookie
    • ua 浏览器相关的内容
  2. response headers

    • context-type 内容类型
    • context-encoding 内容压缩算法
    • context-length 内容长度
    • set-cookie 服务端设置的cookie

request headers和response headers其实都是相对应的, header不需要说的很全, 正常能答出五六个就行, 所以列举了几个, 如果想多答点,把缓存的加上

上面没提 缓存相关的; 如果对缓存不是很清楚最好不要加, 加了下一题很大几率就是缓存题

缓存

不全, 只讲最常用的

  1. 强缓存 cache-control: max-age no-cache no-store
    • max-age 最大缓存时间
    • no-cache 不走强缓存, 可接受协商缓存
    • no-store 完全不缓存
  2. 协商缓存 etag last-modified
    • etag 类似资源的唯一标识, 和我们前端给文件加hash一个道理

    • last-modified 文件的最后修改时间

强缓存

image.png

image.png

协商缓存

  • etag 优先 last-modified, 有etag就使用的是etag, 因为etag更加精确, last-modified精确只有到秒级,

image.png

整理缓存流程

image.png

刷新对缓存的影响

  • 通常操作: url跳转, 浏览器前进后退(正常缓存)
  • 普通刷新: F5/command+r 浏览器按钮刷新, 右击菜单刷新(不走强制缓存, 只走协商缓存)
  • 强制刷新: ctr+F5/command+shift+r(不缓存)

https 加密过程

  1. 对称加密
    • 浏览器发一个请求
    • 服务端给一个密钥
    • 浏览器发请求携带信息通用密钥加密
    • 服务端通过相同的密钥解密
    • 服务端给浏览器返回消息,通过密钥加密
    • 浏览器通过密钥解密

上面的加密有个问题, 一旦传输过程被劫持, 密钥被窃取, 服务端和浏览器通信的消息都有可能被破解

  1. 非对称加密
    • 浏览器发一个请求
    • 服务端给一个公钥 (服务端有两个密钥,一个公钥,一个私钥; 公钥加密, 私钥解密; 私钥加密, 公钥解密)
    • 浏览器发生请求通过公钥匙加密
    • 服务器接收通过私钥解密
    • 服务端返回消息, 通过私钥加密
    • 浏览器通过公钥解密

上面的加密有个问题:一旦传输过程被劫持, 公钥被窃取, 服务端的消息就有很大可能被破解

https采用的加密方式: 非对称和对称加密混合

  • 通过非对称加密, 把公钥给浏览器

  • 就算浏览器的公钥被劫持, 当浏览器的消息是安全的, 公钥加密的需要私钥加密

  • 所有这是, 浏览器把一个 密钥传输给 服务器, 这时这个密钥是安全的

  • 然后大家就用这个密钥进行对称加密的传输方式