http请求

一、什么是http请求

HTTP 请求就是客户端(比如浏览器、手机 App、Python 脚本)向服务器发送的、要求服务器提供资源或执行操作的 "指令"。

二、http请求核心组成

关键四个部分组成:

  • 请求行
  • 请求头
  • 空行
  • 请求体

1、请求行

请求头由请求方法、请求路径、协议版本组成。

  • 请求方法指的是客户端想让服务器做什么,包含get(获取服务器资源)、post(向服务器提交数据)、put(更新服务器资源)、delete(删除服务器资源)。
  • 请求路径指要访问的服务器地址
  • 协议版本通常为通常是HTTP/1.1HTTP/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: 主类型/子类型; 可选参数
    • 主类型:描述数据大类(如applicationtextmultipart);
    • 子类型:描述数据具体格式(如jsonx-www-form-urlencodedform-data);
    • 可选参数:最常见的是charset(字符编码,如charset=utf-8
    • 常见类型:
      • Application/json
        • application/x-www-form-urlencoded(传统表单):无文件上传
        • multipart/form-data(文件上传):上传图片 / 视频 / 文档,或表单中包含文件字段
        • text/plain(纯文本)
        • text/html
  • 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、图片等

相关推荐
ze^03 小时前
【软考信息安全】第2章 网络攻击原理与常用方法
网络·web安全·网络安全
这个DBA有点耶4 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
arbboter5 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
消失的旧时光-19436 小时前
第一篇:Ktor Client 到底是什么?从 Retrofit 迁移理解 Ktor 网络请求架构
网络·架构·retrofit·ktor·dsl
数据知道6 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
江畔柳前堤7 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
LabVIEW开发7 小时前
LabVIEW 通过以太网控制 Yokogawa WT3000 功率分析仪:tmctl.dll 与原始套接字方案
网络·labview·labview知识·labview功能·labview程序
xiaoxiangsiyan8 小时前
企业日常运维高频应用服务全解
运维·网络·云原生·容器·dns
那年窗外下的雪.8 小时前
AIDC 学习日志 Day 3:OSPF Underlay 实验、故障排查与深入解析
服务器·网络·php
星恒讯工业路由器9 小时前
IP地址冲突:成因、影响与工业网络中的应对策略
网络·信息与通信·ip地址冲突·工业网络·网络故障排查·ip-mac绑定