这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
浏览器进程处理输入信息
HTTP 超文本传输协议
应用层协议,基于TCP(一般来说
请求 响应
简单可扩展
无状态
协议发展
HTTP/0.9 请求GET,响应只有HTML文档
HTTP/1.0 增加了Header,有状态码,支持多种文档类型
HTTP/1.1 标准协议:链接复用(长连接),缓存,内容协商
HTTP/2 二进制协议,压缩header,服务器推送
状态码在响应行里
九种Method
GET(获取数据) POST(提交) PUT(完全替换) DELETE HEAD(与GET请求相同但没有响应体) CONNECT(建立隧道) OPTIONS(预检) TRACE(测试) PATCH(部分修改)
一定安全的method: GET HEAD OPTIONS不会修改服务器数据
一定幂等的(执行一次和执行多次效果一样,服务器状态也一样)GET HEAD OPTIONS PUT DELETE
401未经授权
500服务器内部发生了不可预期的错误
504网关或代理的服务器无法在规定的时间内获得想要的响应
RESTful API, 设计API时遵循的一种风格
用每一个URI代表一种资源
用资源的表现层代指资源“/zoo”“/ID”
通过Method指示对资源进行操作的方式
状态码200 (from disk cache)意味着本地缓存,没有实际通过网络传输过来
https默认端口号443 http默认端口号80
跨域解决方案:
CORS
代理服务器(因为同源策略是浏览器的,不是HTTP的)
Iframe
XHR和Fetch并列
XHR五种readyState 0unsent 1opened 2headers-received 3loading 4done
xhr.status===200
fetch支持promise
网络优化: http2 CDN DNS 预解析 预连接 gzip/brotil压缩
预解析dns-prefecth和预链接preconnect的使用都是通过link标签
*websocket协议为ws://或wss://
QUIC
除了首次建联,其他建联只要0RTT,因为UDP不用保证
但是有TCP的可靠传输和TLS加密,支持完美前向
HTTP/2 相⽐ HTTP/1.1 性能上的改进:
1. 头部压缩
2. ⼆进制格式
3. 数据流
4. 多路复⽤
5. 服务器推送