HTTP| 青训营笔记

56 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

初识HTTP

什么是HTTP

超文本传输协议,应用层写于基于TCP协议

发展过程

image.png

HTTP2

特点:更快、更稳定、更简单

帧(frame):HTTP2通信的最小单位,每个帧都包含帧头,至少会标识出当前帧的所属数据流

消息:与逻辑请求或响应消息对应的完整的一系列帧

数据流:已建立的连接内的双向字节流。可以承载一条或多条消息

image.png

HTTPS

Hypertext Transfer Protocol Secure

经过TSL/SSL加密

加密

  • 对称加密:加密和解密都是使用同一个密钥

  • 非对称加密:加密和解密需要使用两个不同的密钥(公钥和私钥)

image.png

协议报文结构

HTTP/1.1版本为例

RequestsResponses结构一致

image.png

具体字段的取值与含义

image.png

状态码

image.png

RESTful API

Representational State Transfer

表现层状态转化

image.png

开发过程中更为关注使用的请求头

image.png

响应头

image.png

缓存

  • 强缓存,本地有直接使用

  • 弱缓存(是不是最新的,能不能用)需要通信协商,于是出现了协商缓存

image.png

逻辑

image.png

cookie

image.png

场景分析及解决方案

静态资源

image.png content-type

静态资源方案:CDN + 缓存 + 文件名hash(把静态资源放在CDN上)

CDN:Content Delivery NetWork

通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务

登录

options请求是跨域问题导致

跨域

三部分组成:scheme + host name + port image.png 协议,域名,端口号有一者不同即为跨域

约定俗成HTTPS端口号默认是使用443,http默认是80

解决方案(跨域请求如何被处理)

  • CORS跨域资源共享

  • 代理服务器

同源策略是浏览器的安全策略,不是HTTP

image.png

  • Iframe

跳转后自动登录流程

image.png

如何发起HTTP协议

浏览器篇

利用XHR:XMLHttpRequest

利用Fetch:XHR升级版,使用Promise,模块化设计,通过数据流处理对象

node篇

标准库:HTTP/HTTPS

常用的请求库:axios

用户体验

image.png

image.png