《现代前端技术解析》第二章读书笔记
时间:2021-07-13
本文章向大家介绍《现代前端技术解析》第二章读书笔记,主要包括《现代前端技术解析》第二章读书笔记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第二章 前端与协议
HTTP协议
- HTTP协议
- 头部结构
- 请求头:请求类型,请求URI,协议版本,扩展内容
- 请求头部域内容:Accept\Cookie\Cache-Control\Host等
- 响应头:状态码,状态描述,协议版本,扩展内容
- 响应头部域内容:Date\Content-Type\Cache-Control\Exprires等
- 空行
- 正文内容
- 头部结构
- HTTP 1.1
- 长连接(keep-alive)
+ 其实HTTP 1.0 也支持长连接,但是想要手动在头部加Connection:keep-alive
+ HTTP 1.1 默认包含keep-alive
+ 长连接指的其实是复用已经建立好的连接,无需重新握手- 协议扩展切换
- Upgrade字段
- 能让服务端找到客户端能支持其他协议(例如websocket)
- WebSocket切换过程
- 请求头中加入Connection: Upgrade和Upgrade:websocket
- 如果服务器支持则返回响应头Upgrade和Connection并且状态码是101表示还需要完成协议的切换
- Upgrade字段
- 缓存控制
- HTTP 1.0 主要通过Expires头进行实现(绝对时间)
- HTTP 1.1 新增了Cahce-Control可以支持max-age表示相对时间
- 请求服务器是也可以根据Etag和Last-Modified判断是否在缓存加载文件
- 部分内容传输优化
- HTTP1.1 可以支持超文本文件的部分传输
- 比如通过起始位置和偏移长度
- HTTP1.1 可以支持超文本文件的部分传输
- 协议扩展切换
- 长连接(keep-alive)
- HTTP2
- 二进制传输(frame)
- 消息头压缩
- TCP多路复用
- HTTP 1.1 的keep-alive是串行的,在应用层
- TCP连接复用是并行的,可以在一个连接中同时进行传输,在传输层。
- 传输优先级/流量控制
- 保证优先级高的文件流先传输
- 例如先传输CSS渲染页面
- 保证优先级高的文件流先传输
- 服务端推送
- 特定条件下把资源主动推送给客户端
- 例如在HTML文档下载前先让JS或CSS先下载
- 特定条件下把资源主动推送给客户端
Web安全机制
- 基础安全知识
- XSS(跨站脚本攻击)
- 可解析内容数据未经处理直接插入页面上解析导致的
- 有存储型XSS、反射型XSS、MXSS(DOM XSS)三种
- 其实就是攻击脚本插入位置不同
- 应对方法:转义
- SQL注入
- CSRF(跨站请求伪造)
- 非源站点按照源站点数据请求格式提交非法数据给源站点服务器的一种攻击
- 应对方法:Token
- XSS(跨站脚本攻击)
- 请求劫持
- DNS劫持
- 篡改DNS服务器,去其他网站
- HTTP劫持
- 被ISP拦截并且在页面上加上小广告
- DNS劫持
- HTTPS
- 加入SSL加密
- 使用443端口
- 这个会了还是省略一万字
- 安全机制
- X-XSS-Protection
- 防止浏览器中的反射性XSS问题发生,加在头部,只有较高版本浏览器支持。
- Strict-Transport-Security
- 一种用来配置浏览器和服务器之间的安全通信机制,防止中间人攻击,强制使用HTTPS协议
- CSP(Content-Security-Policy)
- 只加载可信域名来源内容
- Access-Control-Allow-Origin
- 从CORS中分离出来的,这个头部决定哪些网站可以访问当前服务器资源的设置。
- X-XSS-Protection
实时协议
- WebSocket
- 最小单位为帧。(流式传输)
- Poll和Long-poll
- 前者不停发送请求,后者请求完了等待回应后继续发送请求。
- 后者应用场景:微信扫码登录
- DDP(Distributed Data Protocol)
- 兼容性问题还未广泛使用
- 订阅服务器数据
- 面向未来
RestFul
其实就是将一个URI地址可以用不同的请求方式访问从而达到不同的效果。
与Native交互
- Hybrid App
- Web和Native App的缝合体
- 可用网络资源少
- 支持更新的浏览器特性
- 离线应用
- 要考虑更多机型
- 支持与Native交互
- Web到Native的协议调用
- URI调用
- 通过window.location.href或者iframe发起URI请求
- Native应用需要先在移动端系统注册一个Scheme协议的URI
- 例如myApp://xxxx
- addJavascriptInterface
- URI调用
- Native到Web
- loadURl
- JSBridge
原文地址:https://www.cnblogs.com/garyClh029/p/15007372.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现页面跳转的几种方法
- 一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
- 一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
- PHP 如何阻止用户上传成人照片或者裸照
- 一起来学matlab-字符串操作 10_4 MATLAB中的字符串表示
- 一起来学演化计算-matlab优化函数fminunc
- 一起来学matlab-matlab学习笔记10 10_1一般运算符
- 每日手撕一道算法题-20. 有效的括号
- 一起来学matlab-数组取值 MATLAB中的字符串符号
- 递归解决遍历问题
- PHP中的include和require
- 一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式
- 一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符
- 一篇文章学懂Shell脚本,最简明的教程在这里
- 一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数