这是我参与「第四届青训营 」笔记创作活动的第4天
前言
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
初识HTTP
Hyper Text Transfer Protocol(超文本传输协议),属于应用层协议,基于TCP协议
协议分析
发展:
报文:
method:
状态码
插播:RESTful API是一种API设计风格
发展
HTTP2的概述:
帧(frame)是http/2通信的最小单位。
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
HTTP/2连接是永久的,而且仅需要每个来源一个连接。
流控制:阻止发送方向接收方发送大量数据的机制。
场景分析
静态资源
静态资源方案:缓存+CDN+文件名hash
CDN:Content Delivery Network
通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的港式为用户的请求提供服务。
登录
解决跨域问题:
- CORS(Cross-Origin Resource Sharing):获知服务端是否允许该跨域请求
- 使用代理服务器
- Iframe:不太方便(不推荐)
鉴权:
- Session + cookie(目前更加常见)
- JWT(JSON web token)
实战
浏览器篇
- AJAX之XHR(XMLHttpRequest)
2. AJAX之Fetch
- XMLHttpRequest的升级版
- 使用Promise,可以减少出现回调地狱的情况
- 使用模块化设计,Response,Request,Header对象
- 通过数据流处理对象,支持分块读取
服务器篇
如node标准库中有HTTP/HTTPS,但是功能有限 常用的请求库:axios 支持浏览器、nodejs环境,具有丰富的拦截器。是一个封装很好的库。
用户体验
网路优化
稳定性
结语
互联网技术不断推荐,我们的网络也在逐渐变得更加安全,稳定和快速。作为开发者,我们需要了解最新的网络知识,这样才能更好地优化我们的网页,使用户有更好的。体验