HTTP(超文本传输协议)
1.应用层协议,基于TCP协议 2.每个HTTP请求都分为请求和相应两部分 3.语义简单可扩展,自定义header 4.无状态
Method
不会修改服务器的数据的方法我们称为Safe 同样的请求被执行一次和多次效果相同,服务器的状态也是一样的 我们称为Idempotent(幂等)
也可以说Safe的方法都是Idempotent的
状态码
200 客户端请求成功 301 资源被永久转移到其他的URL 401 未授权 404 请求资源不存在 500 服务器内部出现问题 504 网关或代理的服务器无法在规定时间获得想要的响应
RESTful API一种API设计风格 客户端和服务器之间,传递这种资源的某种表现层 借助HTTP method对服务器进行操作,实现表现层状态转化
缓存
Etag作为资源标识符
强缓存:根据Expires(response header里的过期时间)判断,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存,并不会向服务端发起请求,展示为200状态。
请求中标志的cache-control是强缓存方案
协商缓存:客户端向服务端发送带有If-None-Match和If-Modified-Since的请求进行协商判断,如果资源没有变化继续使用本地缓存,记录为304状态;如果资源发生变化,服务端响应数据,记录为200状态。
cookie中的
HTTPS概述 相比于HTTP 经过了SSL/TSL加密
对称加密:加密和解密都是用同一个密钥 非对称加密:加密和解密需要使用两个不同的密钥:公钥,私钥
静态资源部署方案:利用缓存+CDN+文件名hash
CDN通过用户就近性和服务器负载的判断 CDN确保访问的内容以一种高效的方式为用户提供服务
设置不同的缓存策略 将静态资源放在CDN上 资源打包的时候会将文件名和版本号hush打包策略(确保用户得到的都是最新的内容
跨域 确保scheme+host+name port(默认为443 )都相同才是相同的域名
跨域解决方案
- 1.CORS 向server预请求:获知服务端是否允许跨源请求
- 2.与当前同域的代理服务器:同源策略是浏览器的安全策略不是HTTP
server会检验用户端post内容的正确性 然后存储一个session 并利用Set Cookie将session发给用户端
每次用户端发出请求的时候 都会携带这session
session的特征是
有状态 意思是他要在服务器存一个map来存储所有用户的信息** 需要服务器进行维护** 缺点是耗费内存
jwt的特征是
无状态 意思是所有的东西都放在浏览器即可任何服务器都可以处理登录信息 因为它执行的操作只是解密服务器给用户发送的加密信息来认证 缺点时不能block 因为每一次解密的信息是一样的 就不能禁止用户登录了(拉黑)
WebSocket
是浏览器与服务器进行全双工通讯的网络技术 使用场景:聊天室 URL使用ws://或wss://开头