cookie 最大4k
document.cookie = 'token=123'
sessionStorage,localStorage最大5m
是否跟随http请求发送出去,cookie会跟随http请求发送到服务端
sessionStorage,localStorage不会
sessionStorage,localStorage的api更易用一
HTTP
1. HTTP常用状态码
2. http常用header有哪些
3. 什么是restful api
4. 描述一下http缓存机制
http状态码
1xx 服务器收到请求
2xx 请求成功,如 200
3xx 重定向 301永久重定向 (换了一个域名,重新去请求另外一个地址), 302临时重定向(只是这次访问这个地址,下次还是访问这个地址),短网址应用,比如百度访问一个链接,先跳到百度域名,然后再跳到其它地方服务器返回location地址
304主要用来做缓存
4xx 客户端错误 404, 403一般是没有权限
5xx 服务端错误
500服务器错误
504网关超时
restFul Api(一种规范)
之前只有get post请求方式
get获取数据,post发送数据(新建数据)
patch/put更新数据
delete删除数据
设计api,严格按照这种方式来设计
传统api是把url当作一个功能
RestfulApi 是把url作为唯一的资源的标识(或者ID)
尽量不用url参数,用method作为标识
传统API: /api/list?pageIndex=2
restfulApi: /api/list/2
post: /api/blog
put: /api/blog/2
delete: /api/blog/2
http-Headers
常见request-headers
request-headers
Accept浏览器可接收的数据格式
Accept-Encoding浏览器可接收的压缩算法 如gzip
Accepr-Languange浏览器可接收的语言 如zh-cn
Connection: keep-alive 一次tcp连接重复使用
Cookie
Host
User-Agent 浏览器信息
Content-type 发送数据的格式
常见reponse-headers
conten-type返回的数据格式
content-length返回的数据大小,多少字节
content-Encoding 返回的解压格式
set-cookie
Catch-control Expires
Last-Modified IF-Modified-Since
Etag IF-None-Match
强制缓存
服务端控制catch-control,在response-header中
Catch-control: max-age=2553223
客服端判断Catch-control时间没有过期,就请求缓存的资源,请求本地的资源,没有经过网络
如果catch-control请求过期了,再次经过服务器,返回catch-control,重复之前操作
max-age: 缓存最大过期时间
no-cache: 不使用本地强制缓存, 正常的向服务端请求,服务端怎么处理,不管
no-store:不用服务端的缓存措施,也不用本地缓存,直接重新返回资源,也不让服务端做缓存
private:只能用户做缓存
public:中间路由做缓存
expires: 同为缓存过期时间,已被catch-control替代了
协商缓存(对比缓存)
服务端缓存策略
服务器判断客户端资源是否一样
如果一致就返回304,否则返回200最新资源
浏览器初次请求
服务端返回资源,和资源标识符
浏览器再次访问,带着资源标识
服务端根据资源标识判断当前资源是不是最新的资源
是的话就返回304
不是就返回200,返回新的资源标识
Last-modified资源最后修改时间
Etag资源的唯一标识(类似人的指纹)
服务端返回Last-modified
Last-modified 只能精确到秒级
客服端带着If-modified-since,相当于就是服务器返回的Last-modified
服务器判断If-modified-since这个值是否相等,没有改动过就返回304状态码,资源特别小
如果有改动就返回一个新的Last-modified
Etag
服务端返回etag
客服务带着:If-none-match就是etag的值
如果资源没有变,就返回304
如果变了就返回200,重新返回etag
r如果资源重新生成,内容不变,etag更精准一些
正常操作:强制缓存有效,协商缓存有效
手动刷新:强制缓存失效,协商缓存有效
强制刷新:强制缓存失效,协商缓存失效
https协议
- 对称加密:一个key同负责加密,解密
- 非对称加密:一对key,A加密之后,只能用B来解密
- 对称加密可能存在数据劫持,劫持key,导致密码泄露
服务端存储key和pubkey,中间传输pubkey,需要
http证书
- 中间人攻击
- 使用第三方证书(慎用盗版证书)
- 浏览器校验证书