2. HTTP/HTTPS 协议基础

在 ERP 系统的前后端分离架构中,前端(浏览器/客户端)与后端(API 网关/微服务)之间的每一次数据交互,都基于 HTTP/HTTPS 协议。理解请求方法、状态码、头部字段以及加密原理,是定位通信故障、调试接口、实现安全穿透查询的必备基础。

2.1 HTTP 请求方法

ERP 系统中,CRUD(增删改查)操作通常映射为以下四种核心方法:

方法 语义 ERP 典型场景 请求体 幂等性
GET 查询资源 获取财务报表列表、查询订单详情 无 是
POST 创建资源 / 提交处理 新增采购订单、提交凭证审批 有(JSON/XML) 否
PUT 全量更新资源 修改客户主数据、更新库存数量 有 是
DELETE 删除资源 作废未审核单据、移除废弃物料 通常无 是
调试提示: 在浏览器开发者工具(F12)的 Network 面板中,通过筛选方法类型,可以快速定位某个操作对应的请求。例如,财务报表穿透查询通常使用 GET 请求携带查询参数,若误用 POST 可能导致缓存失效或跨域问题。

2.2 HTTP 状态码

状态码是服务器对请求处理结果的数字标识。ERP 调试中,以下状态码出现频率最高:

  • 2xx 成功
    • 200 OK:请求成功,响应体包含数据(如报表 JSON)。
    • 201 Created:资源创建成功(如新增凭证后返回新 ID)。
    • 204 No Content:删除成功,无返回体。
  • 3xx 重定向
    • 301/302:资源地址变更。ERP 中若 API 网关配置了路由重写,需关注此状态。
    • 304 Not Modified:可使用本地缓存,减少重复查询。
  • 4xx 客户端错误
    • 400 Bad Request:请求参数格式错误(如日期格式不匹配)。
    • 401 Unauthorized:未提供或提供了无效的认证令牌。
    • 403 Forbidden:已认证但无权限访问该报表或数据。
    • 404 Not Found:API 路径错误或资源不存在。
    • 422 Unprocessable Entity:业务校验失败(如借贷不平衡)。
  • 5xx 服务端错误
    • 500 Internal Server Error:后端代码异常,需查看日志。
    • 502 Bad Gateway:网关或代理层无法获取上游响应。
    • 504 Gateway Timeout:查询超时,常见于复杂报表聚合计算。
避坑指南: 在财务报表穿透查询中,若遇到 403 状态码,应优先检查请求头中的 Authorization 令牌是否携带了正确的行级权限;504 超时则需考虑在后端增加查询超时配置或优化 SQL 索引。

2.3 请求头与响应头

头部字段承载了认证、内容协商、缓存控制等关键信息。ERP 调试中必须关注的头部如下:

类别 头部名称 作用 调试示例
请求头 Authorization 携带 Bearer 或 Basic 认证 Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type 声明请求体格式 application/json; charset=utf-8
Accept 期望服务器返回的格式 application/json
响应头 Set-Cookie 服务端设置会话 Cookie sessionId=abc123; Path=/; HttpOnly
Cache-Control 控制缓存策略 no-cache, no-store, must-revalidate
Access-Control-Allow-Origin CORS 跨域允许来源 https://erp.example.com

2.4 HTTPS 加密原理

ERP 系统涉及财务、客户、供应商等敏感数据,必须使用 HTTPS 保障传输安全。其核心加密流程如下:

  1. 客户端发起 ClientHello:浏览器发送支持的 TLS 版本、加密套件列表。
  2. 服务端回应 ServerHello:选择 TLS 版本和加密套件,并发送数字证书(含公钥)。
  3. 证书验证:客户端验证证书的合法性(CA 签名、域名、有效期)。
  4. 密钥交换:客户端生成预主密钥,用服务器公钥加密后发送;服务器用私钥解密。
  5. 会话密钥生成:双方基于预主密钥独立计算出对称加密的会话密钥。
  6. 加密通信:后续所有 HTTP 数据使用会话密钥进行对称加密传输。
HTTPS TLS 1.3 握手流程 HTTPS TLS 握手流程(简化) 客户端(浏览器) 服务端(ERP API) ① ClientHello(TLS 版本 + 加密套件) ② ServerHello + 数字证书(含公钥) ③ 验证证书合法性 ④ 用公钥加密预主密钥 → 发送 ⑤ 私钥解密 → 生成会话密钥 ⑥ 加密通信(对称加密) ⑥ 加密通信(对称加密)
关键结论: HTTPS 通过 非对称加密(RSA/ECC)安全交换密钥,再使用 对称加密(AES)加密实际业务数据。ERP 调试时,若遇到证书错误(如 NET::ERR_CERT_AUTHORITY_INVALID),应检查服务器证书是否由受信任的 CA 签发,或是否使用了自签名证书且未在客户端信任链中安装。

2.5 调试常用工具与命令

在 ERP 通信调试中,以下工具可帮助快速验证请求/响应细节:

  • 浏览器开发者工具(F12):Network 面板查看请求方法、状态码、请求头、响应头及时间线。
  • cURL 命令行:模拟请求,精确控制头部和参数。
  • Postman / Apifox:可视化构造请求,支持环境变量和自动化测试。
# 使用 cURL 模拟 GET 请求,携带  和 JSON 格式期望
curl -X GET "https://erp-api.example.com/api/v1/finance/reports?period=2025-01" \
  -H "Authorization: Bearer <your_>" \
  -H "Accept: application/json" \
  -v  # -v 参数可输出完整请求/响应头
实战建议: 在调试财务报表穿透查询时,优先使用 curl -v 或浏览器 Network 面板的“复制为 cURL”功能,可以完整复现请求上下文,避免因工具差异导致的头部丢失问题。