不能不知道的HTTP

一、入门部分

1、cache-control缓存设置

  • max-age=100:静态资源缓存100秒

  • public/private:只能在客户端/代理服务器 缓存

  • must-revalidate:缓存过期后,到服务端验证才能继续使用缓存

  • no-cache/no-store:是否使用缓存

    2、缓存验证(缓存与服务器内容是否相同)

  • last-modified配合if-modified-since

  • etag配合 if-none-match

3、头部

  • content-type conten-encoding:数据类型
  • cookie:保持会话信息
  • CORS实现跨域并保证安全

4、TCP部分

  • https链接创建过程,为什么https安全
  • 长链接,为什么需要
  • http2的信道复用为什么能提高性能

5、输入url后http请求返回的完整过程
image.png

redirect跳转–》app cache–》DNS解析域名–》创建TCP连接–》request发送请求–》response接受响应

二、基础知识

1、五层模型

  • 应用层(http,ftp)–传输层(TCP,UDP)–网络层–数据链路层–物理层

    2、http1.1(增加一些host命令) http2

  • 数据以二进制传输,头信息压缩和推送(服务器主动推送html,js等到客户端)提高效率。

    3、http三次握手

    (1)客户端C–>服务端S:发送标志位SYN=1,序列号seq=x
    (2)S–>C: SYN =1, seq=y 确认号ack=x+1
    (3)C–>S: seq=z ack=y+1

    4、URI, URL,URN

  • URI =URL+URN 统一资源标志符: 标识互联网上的唯一资源;

  • URL 统一资源定位器:访问链接 基本形式:协议+主机+端口号+路径path参数

  • URN永久统一资源定位符,移动后仍能访问

    5、http报文

    image.png

  • 起始行: 请求方法+URL+协议版本 协议版本+状态码

  • header首部

    6、http方法

    get post delete

    7、CORS跨域

  • 两种解决跨域请求办法

image.png

8、CORE预请求

  • 默认允许的method请求方法:GET POST HEAD( delete等不行)

  • 默认允许的content-type :text/plain、 multipart/form-data 、application/x-www-form-urlencoded

  • 预请求:’Access-Control-Allow-Methods’:’PUT.POST,DELETE’ //使得预请求允许

  • 通过请求方法options,让服务器允许后续的post请求

    9、缓存头cache-control (header中)

    (1)可缓存性

  • public : 经过的地方(客户端和代理服务器)都可进行缓存

  • private:只有发起请求的浏览器可以进行缓存

  • no-cache:不允许缓存(本地可以有缓存,下次使用缓存需要服务器先验证)

  • 区别 于no-store:完全不允许缓存

    (2)到期

  • 浏览器中:max-age=<>多少秒

  • 代理服务器中: s-maxage

  • 服务器中:max-stale,即使浏览器中过期,max-stale不过期也能继续使用

    (3)重新验证

  • must-revalidate:过期后必须重新到服务器端进行请求

  • proxy-revalidate:缓存服务器过期去原服务器请求

    10、资源验证 (header中)

    两种验证头

  • last-modified:上次修改时间 配合if-modified-since或者if-unmodified-since验证是否修改

  • etag 数据签名(如进行hash)配合if-match或if-none-match判断签名是否变化

    11、Cookie (header中)

  • 通过set-cookie设置,下次请求时后自动带上

  • cookie形式:键值对key=value id=1223,可有多个 set-cookie:[‘id-1’,’ad=2’]

cookie属性

  • max-age和expires设置过期时间

  • secure只在https中使用

  • httpOnly不能通过document.cookie访问

    12、session

  • 作为会话连接,通常使用cookie的key作为session,二者不相等,

  • 释放链接后消失,而cookie通常存在缓存中

    13、http长链接

  • connection:Keep-Alive 继续保持,可以复用

  • 一个TCP链接可以有多个http链接

    14、数据协商

    客户端和服务端协商数据

    (1)请求Accept

  • accept指定想要的数据类型

  • accept-encoding压缩方式:gzip ,deflate ,br(较新,压缩比高)

  • accept-language :’zh-CN’ ‘en’

  • user-Agent: 包括win10系统,浏览器内核,浏览器版本等信息

    (2)服务端返回Content

  • Content-Type

  • content-encoding

  • content-language

image.png
image.png

15、redirect重定向

  • 资源转移到别的地方 location:‘/new’

    16、CSP(Content-Security-Policy)内容安全策略

    (1)作用

  • 限制资源获取

  • 报告资源获取越权

    (2)限制方式

  • default-src 限制全局/部分 script-src

  • 制定资源 范围

  • ‘Content-Security-Policy’ : ‘default-src 'http'self\ ‘不能通过链接方式获取该资源,不能跳转出去