HTTP协议特性

  • 基于TCP/IP协议

    • HTTP协议是基于TCP/IP协议之上的应用层协议
  • 基于请求响应模式

    • 必须是客户端发送请求,服务器才能响应,服务器不能自主发送,即肯定是客户端开始简历通信
  • 无状态保存

    • HTTP不会对客户端和服务器之间的通信状态进行保存
  • 短链接和长链接

HTTP请求协议格式

客户端向服务器发送一个请求消息,是由固定格式的,必须以这样的格式发送,服务器才能解析

包括:

  • 请求行
  • 请求头部
  • 空行
  • 请求数据

请求行

请求行是由请求方法、URL和协议版本这三部分组成,通过空格分割

请求头部

主要是允许客户端向服务器通过HTTP 请求传递一些附加信息

HTTP请求头通常由一个标头字段和一个相应的值组成,它们以冒号分隔

空行

\r\n

用于分割请求数据和请求头,如果没有空行,则代表没有请求数据

post有请求数据,get没有请求数据,参数都封装在url里面

请求数据

Request Body

与请求数据相关的最常使用的请求头是Content-Type和Content-Length

根据Content-Type来决定是什么格式的数据

服务器先根据Content-Type来知道是什么格式的数据,来反序列化这个数据

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
POST /api/v1/auth/password/login/?loginWay=password HTTP/1.1
content-type:application/json
user-agent: Chrome/104.0.0.0 Safari/537.36

{username:"tr", password:"123"}