HTTP使用指南(上) | 青训营笔记

122 阅读2分钟

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

一、初始HTTP

什么是HTTP?

即Hyper Text Transfer Protocal 超文本传输协议。

超文本在于HTTP可以承载多种题材,例如CSS、JS、Web APIs等。

特点:

  • 应用层协议,基于TCP协议
  • 每一个HTTP 请求都分为请求、响应两部分
  • 简单可扩展
  • 无状态协议

二、协议分析

1.发展历程

image.png

HTTP/1.1

标准版本,但很多大厂已经切换到了HTTP/2版本 image.png

HTTP/2

HTTP/2更快、更稳定、更简单

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

帧的传输过程采用二进制编码形式,跟以前的纯文本相比效率更高。

image.png

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

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

帧彼此交错发送,接收方重新组织,进一步提升传输效率。

image.png

HTTP、2连接是永久的,而且仅需要每个来源一个连接。

流控制:阻止发送方向接收方发送大量数据的机制。

HTTPS概述

即Hypertext Transfer Protocal Secure

经过TSL/SSL加密

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

非对称加密:加密和解密要使用两个不同的密钥,即公钥(public key)和私钥(private key)

image.png

2.报文分析

Method

image.png

Safe (安全的):不会修改服务器的数据的方法 如:GET、HEAD、OPTIONS

Idempotent (幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是的Idempotent 如: GET、HEAD、OPTIONS、PUT、DELETE

状态码

image.png

  • 200 OK 客户端请求成功
  • 301 资源(网页等)被永久转移到其他URL
  • 302 临时跳转
  • 401 Unauthorized 请求未经授权
  • 404 请求资源不存在,可能是输入错误的URL
  • 500 服务器内部发生了不可预期的错误
  • 504 Gateway Timeout 网关或者代理的服务器无法在规定的时间内获得想要的响应

RESTful API

RESTful API:一种API设计风格

REST - Representational Sate Transfer

  1. 每一个URI代表一种资源
  2. 客户端和服务器之间,传递这种资源的某种表现层
  3. 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态化”

image.png

常用请求头

image.png

常用响应头

image.png

缓存

image.png

image.png

cookie

Set-Cookie-response

image.png