


文章目录
二、HTML、CSS、JS应用数据的描述格式【数据怎么描述网页】
一、HTTP应用数据的组织规则【请求响应消息怎么组织】
HTTP应用层协议
1.消息内容写什么
1.1请求什么:
- 要什么资源
- 要它做什么
1.2响应什么:
- 给什么结果
- 给它处什么
2.消息结构怎么写
按行组织的字符文本:
- 起始行
- 首部字段headers
- 空行
- 消息体body
客户端在请求的path 、query 、headers 、body 中 **上传++指令++ 和++数据++**给服务器
2.1起始行:
- ++请求++ 里的请求行
- ++响应++ 里的状态行
2.1.1请求行
浏览器直接向源站服务器发请求 时 用标准请求行:
methoud ++request-target++ scheme/version
↓/path?query
Host:host
代理 时用绝对请求行:methoud URL scheme/version
Host:host
2.1.1.1请求方法
请求方法传达服务器 以什么语义来处理目标资源,语义倾向并不决定 本来就依据内容地 可穿含兼容式的处理
2.1.1.1.1GET获取
客户端向目标资源****上传获取指令 语义服务器读取资源 返回URL资源的表示内容,特点:
- 通常不应修改服务器状态
- 通常是安全的
- 通常是幂等的
- 最常用于取HTML、CSS、JS、图片、JSON
GET的body ++通用语义弱++ 、++兼容性差++ :
很多服务器、框架、代理、缓存都不支持或不推荐 GET请求依赖body放业务指令
2.1.1.1.2POST提交/处理/创建
客户端向目标资源上传提交数据 语义服务器处理资源,用于:
- 提交表单
- 上传
- 登录
- 新建资源
- 触发某个处理动作
上传的保密数据 ++放query里不安全++:
- 容易出现在浏览器地址栏
- 容易进入历史记录
- 容易被日志记录
- 容易被复制传播
通常放在body里 配合HTTPS的加密传输
2.1.1.1.3PUT整体替换
用这份完整内容****替换目标资源 或在指定位置创建资源
2.1.1.1.4PATCH部分修改
对目标资源做部分修改
2.1.1.1.5DELETE删除
删除目标资源
2.1.1.1.6HEAD获取
获取目标资源 只要响应头
2.1.1.1.7OPTIONS询问
询问目标资源 支持哪些方法、哪些通信选项
幂等
请求操作重复执行****影响后的资源结果相同 是幂等的
- GET、PUT、DELETE通常设计成幂等
- POST通常不是幂等
2.1.1.2URL
URL标识Web逻辑上的资源,不一定对应服务器磁盘 物理位置上的资源
scheme://++authority++/path?query#fragment
↓
HTTP的URL:scheme://[userinfo@]host[:port][/path][?query][#fragment]([]表示可省略)
2.1.1.2.1scheme:(协议方案)
表示++采用什么协议****访问++资源:
- http
- https
2.1.1.2.2//host(主机)
表示++访问 哪个主机++:
- 域名
- IP
2.1.1.2.3:port(端口)
表示++访问主机上的哪个服务端口++:
- HTTP默认80
- HTTPS默认443
2.1.1.2.4/path(路径)
path是服务器程序自己解释的路由路径,不一定对应 服务器硬盘上的真实文件路径 ,表示++访问站点里的哪个路径资源++:
- "/"站点上的逻辑根路径资源 通常会被网站设计成首页
2.1.1.2.5?query(查询字符串)
给资源++附带的参数++++,表示筛选、搜索、分页、条件说明 资源++:
- ?query=java&page=2
2.1.1.2.6#fragment(片段标识符)
客户端++自己用++++于 页面内路径跳转到锚点 或前端路由++,不会出现在HTTP请求里 发给服务器
2.2消息体
- 请求体中放资源内容 用于上传文件 或提交文本内容
- 响应体中放资源的内容表示:HTML、CSS、JS、JSON、图片、视频、文件
3.消息一一对应
++请求一个++网页 会触发++多个请求-响应++对:
- 浏览器请求主HTML文件一次 -> 服务器返回响应一次
- 浏览器解析HTML 发现还需要CSS、JS、图片、字体资源 额外发送多个请求 -> 服务器对应每个请求地返回多个响应
4.消息整个应用层单元
应用层HTTP消息被TCP传输 向下拆成加头 的多个TCP段 再各自被IP封装 成多个网络数据包
HTTPS加密传输
HTTPS加密传输 = HTTP明文传输 + TLS加密传输层
TLS负责:
- 加密
中间人更难 直接++偷看++到你传输的内容 - 完整性校验
中途更难 悄悄++篡改++ 内容而不被++发现++ - 身份验证
浏览器通过证书++确认++ 你++连接++ 的是声称的那个++站点++
二、HTML、CSS、JS应用数据的描述格式【数据怎么描述网页】
1.HTML
HTML是网页的结构描述语言,告诉浏览器:
- 这里有标题
- 这里有段落
- 这里有图片
- 这里引用了某个CSS和某个JS
2.CSS
CSS是网页的样式规则,告诉浏览器:
- 字体多大
- 颜色是什么
- 元素排版怎么摆
- 哪个盒子多高多宽
3.JavaScript
JavaScript是网页的行为逻辑,告诉浏览器:
- 点击按钮后做什么
- 如何动态修改页面内容
- 如何向服务器发送AJAX/fetch请求
- 如何做交互、校验、动画
三、应用层应用数据的应对处理【数据怎么使用渲染】
- 应对HTML、CSS、JS、TEXT数据 渲染成网页
- 应对image/png数据 显示成图片
- 应对application/json数据 交给JS程序处理
- 应对application/octet-stream数据 下载成文件
1.浏览器
浏览器是一个兼容面向许多服务器 的客户端程序,它会:
- 和服务器建立连接
- 发送HTTP请求
- 接收响应
- 解析HTML、CSS、JS数据 渲染组合成页面
- 执行JS
- 管理Cookie、缓存、历史记录、安全策略
客户端浏览器应用
1.通过地址找到服务器
2.按照HTTP协议 组织请求消息发送
服务器应用
3.按照HTML、CSS、JS格式 把数据描成网页内容装进响应消息
4.按照HTTP协议 组织响应消息发回
5.解析主HTML 发现里面引用CSS、JS、图片 再发请求获取它们资源 组合渲染成页面
1.1缓存
浏览器在++服务器的响应头++ 和++缓存策略++ 的允许 下 缓存HTTP响应,可以设置保留时间地缓存 动态资源时段临新的内容
- GET请求的响应常能复用 常被缓存
- POST请求的响应 没有GET常见被缓存
浏览器缓存后 下次获取资源时:
1.强缓存生效
浏览器不发请求 直接用本地缓存
2.协商缓存
浏览器发送 带上If-None-Match/If-Modified-Since的请求:
- 服务器发现资源没变 返回304 -> 浏览器继续使用本地缓存
- 服务器发现资源已变 返回200 -> 浏览器发送请求取新资源
1.1.1CDN服务器
CDN是分布在全国各地的边缘节点 缓存合作网站里的公共资源
---> 浏览器访问网站时:
- 图片CSS、JS 走CDN
- 登录、下单、用户中心 走源站
不公共缓存到CDN:
- 强个性化内容
- 强实时内容·
- 带私密数据的响应
