HTTP协议| 青训营笔记

54 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

初识HTTP

image.png

基础知识:

  • 超文本传输协议 Hyper Text Transfer Protocol
  • 应用层协议,基于TCP协议
  • 请求响应
  • 简单可扩展
  • 无状态(每个请求都是孤立的) image.png

协议分析

1)方法 image.png

  • Safe (安全的) : 不会修改服务器的数据的方法,如GET HEAD OPTIONS
  • Idempotent (幂等) : 同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,如GET HEAD OPTIONS PUT DELETE
  • 所有safe的方法都是Idempotent的

2)状态码 image.png 3)RESTful API : 一种API设计风格;
REST - Representational State Transfer

  • 每一个URI代表一 种资源;
  • 客户端和服务器之间,传递这种资源的某种表现层;
  • 客户端通过HTTP method,对服务器端资源进行操作,实现"表现层状态转化" 。 image.png

4)常用请求头 image.png 常用响应头 image.png 5)缓存

  • 强缓存:本地有,直接用就行
  • 协商缓存:无论本地有没有,一定要经历和服务器通信协商的过程 image.png
  • max-age:有效时间
  • must-revalidate:超过有效期,无论本地是否有,都不能使用

image.png 304没有更新,直接用;200有变化,响应缓存请求

6)cookie image.png

HTTP/2(更快、更稳定和简单)

  • 消息:与逻辑请求或响应消息对应的完整的一系列帧。(以帧为单位传送信息)
  • 数据流:已建立的连接内的双向字节流可以承载一条或多条消息。
  • HTTP/2连接都是永久的,而且仅需要每个来源一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制(比如,看视频暂停了,之后可以使用流量控制,将流量转移一些给其他应用)
  • 服务器推送(根据请求,猜测之后行为) 例如,stream1请求html文件,服务器发现该文件引用了.js和.css文件,于是预测之后也会请求,于是一起推送了 image.png HTTPS
  • HTTPS : Hypertext Transfer Protocol Secure
  • 经过TSL/SSL加密
  • 对称加密:加密和解密都是使用同一个密钥
  • 非对称加密,加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)

image.png

场景分析

静态资源

方案:缓存+CDN(确保快速拿到资源)+文件名hash(确保资源是最新的)

  • CDN : Content Delivery Network
  • 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务

image.png 跨域访问:域名存在不同时(最后一个列子除外,没有端口号直接默认) image.png

image.png

HTTP是无状态的,为什么网页还可以保持登录状态?

  • 方案1:session+cookie,登陆后服务器将相应验证信息设置到cookie中
  • 方案2:登陆后服务器返回一个token,之后再向服务器请求的时候,会携带token给服务器验证 image.png 跳转网页保持登录状态,eg单点登录:

image.png

实战

image.png

image.png