HTTP协议学习笔记 | 青训营

59 阅读3分钟

什么是HTTP协议

全称超文本传输协议,是基于应用层,TCP协议,无状态的协议

HTTP协议的发展

image.png

HTTP协议请求方法

image.png

image.png

image.png

image.png

HTTP请求流程

  1. 浏览器向服务器发起请求
  2. 判断是否有缓存,如果有缓存则通过Cache-Control首部的max-age字段判断强缓存是否新鲜,如果没有缓存才发起请求
  3. 如果强缓存新鲜,则直接读取浏览器缓存,并将缓存返回浏览器,如果不新鲜则进行读取协商缓存的信息,首先判定上次响应头中是否有ETag字段
  4. 如果有则在请求头中带上If-None-Match字段(ETag/If-None-Match是资源的特定版本表示符,类似指纹),没有则再次判定上次响应头中是否有Last-Modified字段
  5. 有则发起请求并在请求头中带上If-Modified-Since字段(Last-Modified/If-Modified-Since表示最后修改时间)
  6. 发起请求后判断响应码是否304(表示发送了GET请求,但文件未发生变化),如果是,则读取浏览器缓存,并将缓存返回浏览器,如果是200的话,则代表请求完成

N()Q1@$X4INKZKR0EC@MWOU.png

使用cookie进行访问控制并携带信息

image.png

HTTP/2

image.png

image.png

image.png

HTTPS

image.png

静态资源

报文头分析

image.png

  1. 允许所有域名访问
  2. cache-control: 保质期一年
  3. 强缓存
  4. 资源类型为css

使用静态资源方案

image.png

  1. 缓存+CDN 可以使用户更快拿到资源
  2. 而使用不同的文件名hash可以确保用户收到的是最新的资源

登录实例

image.png

可以发现请求登录的方法是options,而请求地址的三级域名不是常规的www,而是sso,则是因为发生了跨域请求

  • 什么情况下会发生跨域?

只要发送请求客户端和接受请求的服务端的协议名,任意一级域名,和主机号其中有一处不同就会发生跨域

解决跨域问题

跨域问题是因为浏览器具有同源策略,阻止跨域请求,而HTTP请求本身并不具有同源策略

  1. 代理服务器

设置代理服务器的网络号和端口号与服务器一致,这样代理服务器与服务器之间就是同源的,而客户端与代理服务器之间并不具有同源策略,因此只要使代理服务器转发请求与响应,就能解决跨域问题

记住登录状态

image.png

  • 使用鉴权的方式验证用户信息
  1. session+cookie

在登录完之后把账户密码验证码等信息提交给serve,如果正确serve会生成session并把它存储, 同时在本次请求的响应中serve把session利用set-cookie存储到域名和地址下面,下次访问的时候浏览器自动携带cookie,把之前存储session携带出来,serve再与本地的session比较,从而得到用户信息

跳转后的网站自动登录

SSO 单点登录解决方案

  1. 登录访问A站点,询问服务端对比session是否具有登录态,如果没有则跳转到SSO这个登录站点,再次询问SSO是否具有登录态,若也没有,则在SSO站点登录,成功登录后,在SSO站点种下cookie,而后SSO站点发起重定向请求到callback站点,并携带下一个站点的地址与用户信息,处理成功后,在A站点种下cookie,再重定向到登录页面,此时已有登录信息,完成登录.
  2. 登录访问B站点,询问服务端无登录态,则访问SSO站点,SSO站点已有登录信息,因此直接重定向到callback站点,在B站点种下cookie,重定向到登录页面,完成登录.

image.png

如何发起HTTP请求

浏览器

原生AJAX

image.png

Fetch

image.png

提高用户体验

image.png

image.png