HTTP网络相关 | 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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. 服务器推送