文章目录
HTTP协议
- 规定浏览器发送和服务器返回的内容的格式
- 超文本传输协议(Hypertext Transfer Protocol,HTTP)
- 请求-响应协议,通常运行在TCP之上。
- 指定了客户端可能发送给服务器的消息以及得到的响应
- http1.1 协议
- http协议是无状态协议,不会保存多次请求之间的关系,使用cookie做状态管理
- 持久连接节省通信量(HTTP1.1和部分HTTP1.0)
- 请求方法有get,post,put,delete等等
一、HTTP协议报文
- 用以HTTP交互的信息就是HTTP报文
- 报文头,报文主体,两者以空行分割
- 报文头:服务器或者客户端需要处理的请求或者响应的内容及其属性
- 报文主体:被发送的数据
二、 在浏览器中查看报文
【右键】-- 【检查】–【网络】–【FETCH/XHR】–【名称】
【标头】
【负载】
【响应】
三、HTTP协议-- 请求报文
客户端发送的HTTP报文;
在【标头】中
1. 请求行:
包含用于请求的方法(GET等),请求URI和HTTP版本
POST /api/register HTTP/1.1
2.请求头:Content-Type: application/json等
3.空行
4. 报文主体:
在浏览器中查看报文,见二、
*POST /api/register HTTP/1.1
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive
Content-Length: 61
Content-Type: application/json
Host: baidu.com
Origin: null
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36 Edg/120.0.0.0*
三、HTTP协议-- 响应报文
服务器返回给浏览器的内容;
1.响应行(状态行)
包含协议,HTTP响应状态码(400,404,500 等),状态信息
HTTP/1.1 200 OK
HTTP响应状态码
状态码 | 说明 |
---|---|
1** | 信息 |
2** | 成功,请求被正常处理 |
3** | 重定向消息,浏览器需要执行某些特殊的处理以正确处理请求 |
4** | 客户端错误,客户端是发生错误的原因所在 |
5** | 服务端错误,服务器本身发生错误 |
2.响应头
3.空行
4.响应体
{
“code”: 10000,
“message”: “注册成功”,
“data”: {
“id”: 133164,
“account”: “itheima654321012”
}
}
HTTP/1.1 200 OK
Date: Thu, 04 Jan 2024 04:17:09 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 89
Connection: keep-alive
Set-Cookie: acw_tc=76b20ffd17043418297408273e1e06269039bdfe44b85b9ce45cfcb3c2e0f6;path=/;HttpOnly;Max-Age=1800
Server: nginx
Vary: Origin
Access-Control-Allow-Origin: null
Access-Control-Allow-Credentials: true
Accept-Ranges: bytes
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-download-options: noopen
x-readtime: 12
X-Download-Options: noopen
Referrer-Policy: no-referrer-when-downgrade
X-Content-Type-Options: nosniff
X-Permitted-Cross-Domain-Policies: none
总结
附:HTTP响应状态码
状态码 | 注释 | 说明 |
---|---|---|
200 | OK | 表示客户端发来的请求被服务器正常处理了 |
204 | Not Content | 请求被成功处理,但是返回的响应报文不包含实体的主体部分 |
206 | Partial Content | 客户端进行范围请求,而服务器重新执行了这部分的GET请求 |
301 | Moved Permanently | 永久重定向。表示请求的资源已经被分配了新的URI,以后应该使用新的URI |
302 | Found | 临时重定向。代表资源只是暂时的移动了以后还可能会移动为新的URI |
303 | See Other | 由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源 |
304 | Not Modified | 客户端发送附带条件(请求首部中if开头的属性中的一种)的请求的时候,服务端允许访问资源,但是那些请求并没有满足,直接返回 |
400 | Bad Requset | 请求报文中存在语法错误,请修改请求内容后再发送请求 |
401 | Unauthorized | 客户端未认证授权 |
403 | Forbidden | 服务端禁止客户端访问此资源 |
404 | Not Found | URL写错了,找不到此路径 |
500 | Internal Server Error | 服务器内部故障,可能是bug导致的 |
503 | Service Unavaliable | 服务器暂时不可用(停机维护或者超负载),如果事先知道解除这种情况所需的时间,最好写入响应头中的Retry-After这个字段再返回给客户端 |