一、什么是http请求
HTTP 请求就是客户端(比如浏览器、手机 App、Python 脚本)向服务器发送的、要求服务器提供资源或执行操作的 "指令"。
二、http请求核心组成
关键四个部分组成:
- 请求行
- 请求头
- 空行
- 请求体
1、请求行
请求头由请求方法、请求路径、协议版本组成。
- 请求方法指的是客户端想让服务器做什么,包含get(获取服务器资源)、post(向服务器提交数据)、put(更新服务器资源)、delete(删除服务器资源)。
- 请求路径指要访问的服务器地址
- 协议版本通常为通常是
HTTP/1.1或HTTP/2
2、请求头(重点加粗)
请求头以键值对的形式,告诉服务器客户端的环境、需求等。以下为常见的请求头:
- host:目标服务器的域名
- User-Agent:客户端标识(浏览器或脚本语言)
- Accept:客户端能接受的响应式数据格式
- application/json(只接受 JSON)text/html,application/xml;q=0.9,*/*;q=0.8(优先 HTML/XML,其次任意格式)q是权重(0-1),数值越高优先级越高
- Accept-Encoding:指定客户端支持的压缩压缩方式
- gzip, deflate, br
- Accept-Language:指定客户端偏好语言,服务器会据此返回对应语言的内容
- zh-CN,zh;q=0.9,en;q=0.8
Content-type:请求体的数据格式
- 格式:Content-Type: [主类型]/[子类型]; [可选参数]
- 主类型:描述数据大类(如
application、text、multipart); - 子类型:描述数据具体格式(如
json、x-www-form-urlencoded、form-data); - 可选参数:最常见的是
charset(字符编码,如charset=utf-8) - 常见类型:
- Application/json
- application/x-www-form-urlencoded(传统表单):无文件上传
- multipart/form-data(文件上传):上传图片 / 视频 / 文档,或表单中包含文件字段
- text/plain(纯文本)
- text/html
- Application/json
- Content-Length:声明请求体的字节长度
- 服务器据此判断请求体是否完整接收
- Authorization:身份验证凭证
- Cookie:携带服务器之前设置的 Cookie(会话标识 / 用户信息)
- Connection:声明连接是否保持
- keep-alive(长连接)、close(短连接)
3、空行
分隔请求头和请求体的必选空行(即使没有请求体也需要)。
4、请求体
根据请求头中的Content-Type格式向服务器发送对应的数据内容,主流是json格式。
三、响应
固定三部分组成:状态行、响应头、空行、响应体
1、状态行
- 协议版本 状态码 状态码描述(HTTP/1.1 200 OK)
- 常见状态码:
- 200:请求成功
- 301/302:重定向
- 400:请求参数错误
- 401:未登录/没权限
- 403:拒绝访问
- 404:页面不存在
- 500:服务器报错
- 502/503/504:网关/服务不可用
2、响应头
告诉浏览器怎么处理返回的内容
Content-type:返回类型
Content-Length:数据长度
Set-Cookie:设置cookie
Location:重定向地址
Server:服务器信息
Cache-Control:缓存
3、响应体
网页、json、图片等