目录
Access-Control-Allow-Origin 分析
HTTP
HTTP(Hyper Text Transfer Protocol), 译为超文本传输协议, 是互联网中应用最广泛的应用层协议之一
设计HTTP最初的目的是: 提供一种发布和接收HTML页面的方法, 由URI来标识具体的资源, 后面用HTTP来传递的数据格式不仅仅是HTML, 应用非常广泛
- 1991年, HTTP/0.9: 只支持GET请求方法获取文本数据(比如HTML文档), 且不支持请求头、响应头等, 无法向服务器传递太多信息
- 1996年, HTTP/1.0: 支持POST、HEAD等请求方法, 支持请求头、响应头等, 支持更多种数据类型(不再局限于文本数据), 浏览器的每次请求都需要与服务器建立一个TCP连接, 请求处理完成后立即断开TCP连接
- 1997年, HTTP/1.1: 支持PUT、DELETE等请求方法, 采用持久连接(Connection: keep-alive), 多个请求可以共用同一个TCP连接
- 2015年, HTTP/2.0
- 2018年, HTTP/3.0
报文格式
请求报文
请求报文实例 - GET请求
请求报文实例 - POST请求
响应报文
响应报文实例
ABNF
ABNF(Augmented BNF): 是BNF(Backus-Naur Form,译为:巴科斯-瑙尔范式)的修改、增强版。在RFC 5234中表明:ABNF用作internet中通信协议的定义语言。ABNF是最严谨的HTTP报文格式描述形式, 脱离ABNF谈论HTTP报文格式, 往往都是片面、不严谨的
ABNF - 规则定义
报文格式 ~ HTTP-message
报文格式 ~ request-line
示例:
GET /hello/ HTTP/1.1
报文格式 ~ status-line
示例:
HTTP/1.1 200
HTTP/1.1 200 OK
报文格式 ~ header-field
示例:
Host: localhost:8080
Connection: keep-alive