http及其应用场景 | 青训营笔记

103 阅读4分钟

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

http

http有八种常见请求

  1. get:参数在url上,浏览器长度有限制,不安全
  2. post:参数不可见,长度不受限制
  3. put:上传最新内容到指定位置
  4. delete:删除请求的url所表示的资源
  5. head:不返回相应主体,主要用于客户端查看服务器性能
  6. options:与head类似,是客户端用于查看服务器的性能,可以获取服务器支持的http请求方法(黑客)。JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送预检请求,以判断是否有对指定资源的访问权限
  7. connect:http1.1预留的,将连接方式改为管道方式,通常用于SSL加密服务器的链接与 HTTP非加密的代理服务器之间的通信
  8. trace:请求服务器[回显收到的请求信息]主要用于HTTP请求的测试或诊断
  9. patch:出现的较晚,用于更新局部的资源,不存在时,会创建一个新的(http1.1之后使用的较多的)

http header

请求头
  • Accept:接收类型,表示浏览器支持的MIME类型,对应服务端返回的Content-Type
  • content-type:多媒体资源类型,application/json
  • location:重定向返回的要访问的新网址
  • cache-control:大小写不敏感
  • Cache-Control: max-age=< seconds>,no-cache
  • Cookie:有cookie且同域访问时会自动带上
  • connection:长连接如何处理,如keep-alive
  • Origin:最初的请求是从哪里发起的(只会精确到端口),Origin比Referer更尊重隐私
  • Referer:该页面的来源URL(适用于所有类型的请求,会精确到详细页面地址,csrf拦截常用到这个字段)
  • user-agent:浏览器身份表示,可以乱设置,postman、axios会设置自己的标号
  • Accept-Encoding:能够接受的编码方式列表
  • Accept-Encoding: gzip, deflate;
响应头
  • vary:告诉代理服务器/缓存/CDN,如何判断请求是否一样,值要么是*要么是header中key名称组合(服务器判断的一句),设置cors的时候配置origin
  • Set-Cookie:设置和页面关联的cookie
  • access-control-allow-:跨域复杂请求设置预检;如-origin服务端允许的请求origin头部
  • x-powered-by;x-Forwarded-For查看客户端IP地址nginx负载均衡加的
缓存请求头
  • If-Modified-Since:匹配看文件是否变动,只能精确到1s之内,http1.0中;
  • expires:缓存控制,在这个时间内不会请求,直接使用缓存,http1.0,而且是服务端时间;
  • if-none-match:用来匹配文件内容是否改变(非常精确),http1.1中
缓存响应头
  • Last-Modified:请求资源的最后修改时间;
  • cache-control:告诉浏览器或其他客户,什么环境可以安全的缓存文档;
  • ETag:请求变量的实体标签的当前值 image.png

http版本

image.png

http2
  • 帧(frame):使用二进制分帧作为最小通信单位,每个帧包含帧头,至少标识当前帧所属数据流
  • 消息:与逻辑请求或响应消息对应的完整的一系列帧
  • 数据流:已建立连接内的双向字节流,可以承载一条或多条消息
  • 交错发送,接收方重组织
  • 每一个来源和目标地址建立连接之后这个链接就可以被永久利用
  • 流控制:阻止发送方向接收方发送大量数据的机制(可以选择优先级更高的)

应用场景

静态缓存
  • 状态码是200不一定请求成功了,可能是用本地缓存强缓存
  • 加快静态资源访问速度来性能优化,要求能快速拿到缓存且拿到的是最新的缓存
  • 静态资源部署:缓存+CDN+文件名hash,文件名加hash值保证每个缓存改变了文件名变化
鉴权
  • session+cookie
  • JWT:JSON web token,唯一,有效期短,只希望被用一次(单点登录和会话管理不适用)
单点登录

Single Sign On,会有一个sso服务器,如果用户到a产品没登录cookie,就会先重定向到sso服务器查找

用户体验

  1. 速度 image.png
  2. 稳定性 image.png