https
工作流程
证书如何签字
非对称加密的特点
- 任何经过A的公钥进行过加密的信息,只有A的私钥才能解密
- 任何有公钥的人可以确认对方发送的信息是被私钥加密过的
http
工作流程
特性
- 被http控制的特性:
- 缓存
- 开放同源限制
- 认证
- 用HTTP Cookies来设置指定的会话
- 代理和隧道
- 通常情况下,服务器和/或客户端是处于内网的,对外网隐藏真实IP地址。因此HTTP请求就要通
过代理越过这个网络屏障。
- 通常情况下,服务器和/或客户端是处于内网的,对外网隐藏真实IP地址。因此HTTP请求就要通
- 会话
http报文
请求报文响应报文
请求消息和响应消息的结构
结构包括:起始行/状态行,请求头/响应头,空行,主体
状态码分类表
类别 | 原因短语 | |
---|---|---|
1xx | Informational(信息性状态码) | 接受的请求正在处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向) | 需要进行附加操作以完成请求 |
4xx | Client error(客户端错误) | 客户端请求出错,服务器无法处理请求 |
5xx | Server Error(服务器错误) | 服务器处理请求出错 |
MIME类型
是一种标准化的方式来表示文档的性质和格式
扫描二维码关注公众号,回复: 11837832 查看本文章
浏览器通常使用MIME类型( 而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正
确的MIME类型附加到响应对象的头部是非常重要的。
HTTP/1x的缺点
- 消息头不像消息主体一样会被压缩。
- 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
- 无法复用。
缓存机制
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。
当web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。
缓存需要合理配置,因为并不是所有资源都是永久不变的。重要的是对一个资源的缓存应截止到其下
一次发生改变(即不能缓存过期的资源)。
缓存的分类
- 私有缓存(只能用于单独用户)
- 请求头写
Cache-Control:private
- 请求头写
- 共有缓存(可以被多个用户使用)
- 请求头写
Cache-Control:public
- 请求头写
- no-store(每次都从新发送请求,不会缓存)
- no-cache(需要验证后才能缓存)
缓存的优势
- 缓解服务器端的资源消耗和运行压力,提升服务器端的整体性能。
- 减少服务器端资源加载的延迟,进而减少显示某个资源所用的时间。.
- 减少对带宽造成的压力,避免网络阻塞问题的出现
- Web站点变得更具有响应性
缓存的应用(只能缓存GET响应)
- 检索成功后的响应,HTML文件,图片,文件
- 不变的重定向:响应状态码为301。
- 错误响应:响应状态码为404的一个页面
- 不完全的响应:响应状态码为206,只返回局部的信息
对Cache-Control设置不同的属性
一般出现在响应头中
但是有浏览器兼容问题,可以用Pragma头代替,他的值和上图的值一样
资源验证
一、验证方法
- Last-Modified(上次修改时间)和if-Modified-Since配合使用【对比上次修改时间以验证资源是否需要更新】
- Etag(数据签名)服务器返回
下次请求都发送if-Match就是服务器返回的Etag的值
【对比资源的签名判断是否使用缓存】
Cookie
作用域
Domain和Path标识定义了Cookie的作用域
- Domain标识指定了哪些主机可以接受Cookie
- Path标识指定了主机下的哪些路径可以接受Cookie
有效期
Max- Age和Expires标识定义了Cookie的有效期,即Cookie的生命周期
- 会话期Cookie
- 浏览器关闭之后Cookie会被自动删除
- 会话期Cookie不需要指定过期时间( Expires)或者有效期(Max- Age )。
- 持久性Cookie
- 持久性Cookie可以指定一个 特定的过期时间( Expires)或有效期(Max- Age )。
四、应用
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为等)
访问和更新Cookie
在前端通过document.cookie
创建,读取,修改,删除
一、数据格式
- 多个数据用“;”分隔
- 数据内容都是key=value格式的
- 允许存储多个数据内容
- 要设置作用域,才能用
二、创建和修改
document.cookie = newCookie;
修改是直接在原有的基础上添加
用这个方法一次只能对一个cookie进行设置或更新
三、读取Cookie
四、删除 Cookie
解决跨域
CORS(跨域资源共享),新增一组HTTP首部字段,允许服务器声明哪些源站有权限访问哪些资源。
浏览器必须首先使用OPTIONS方法发起一个预检请求,从而获知服务端是否允许该跨域请求。
跨域资源共享机制的工作原理主要应用于三个场景:
- 简单请求
- 满足条件
- 请求方法:get、head、post期中之一
- 不得设置:Accept、Accept-L anguage、Content-L anguage、Content-Type头部信息
- Content-Type的值为:text/plan、multipart/form-data、application/x-www-form-udlemcoded期中之一
- 请求消息
- 请求头每次请求自动生成一个
Origin
字段,此字段表示请求来源
- 请求头每次请求自动生成一个
- 响应消息
- 如果满足以上条件,再加上响应头有
Access-Control-Allow-Origin:*
就可以完成简单请求,期中*
表明该资源可以被任意外域访问。
- 如果满足以上条件,再加上响应头有
- 注意
- 如果服务器未正确响应首部,不会返回任何信息
- 满足条件
- 预检请求
和简单请求没什么区别,就是在发送请求之前先发送一个option请求,看服务器是否让请求
一、请求头差别
二、响应头(和普通的一致)
三、认证请求
如果要想对对于跨域XML HtpRequest请求,浏览器不会发送身份凭证信息。如果要发送凭证信息,需要
设置XML HttpRequest的某个特殊标志位。xmlHttpRequest.withCredentials = true;
将XML HttpRequ Jest的withCredentials标志设置为true,使得向服务器发送Cookies,服务器返回
响应首部字段Access-Control-Allow-Credentials: true。