🌐 HTTP — 正确使用 HTTP 的最佳实践
v1.0.0该技能提供使用 HTTP 的最佳实践指南,涵盖正确的 HTTP 方法、状态码、头部和缓存使用。它是一个静态参考,旨在帮助开发者正确使用 HTTP。
4· 3,600·40 当前·40 累计
安全扫描
OpenClaw
安全
high confidence此技能仅提供指令,无代码、无安装要求,不请求任何凭据或系统访问,声明的目的与内容完全一致。
评估建议
该技能基本上是一个关于 HTTP 最佳实践的静态参考,技术风险极低。若您非常谨慎,可以考虑只安装来自信任来源的技能,权衡是否偏好内置文档或策划的参考,并记住该技能可以被您的代理自主调用(但它无法访问您的文件或凭据,因为它没有安装或环境要求)。详细分析 ▾
✓ 用途与能力
名称和描述与 SKILL.md 内容匹配:该文件是一个关于 HTTP 方法、头部、缓存、CORS、安全头、重试等的专注清单。元数据或指令中没有声明超出提供指导的能力。
✓ 指令范围
SKILL.md 只包含关于 HTTP 行为和头部的静态推荐。它不指示代理读取文件、环境变量、系统状态或向外部端点传输数据,因此没有范围蔓延。
✓ 安装机制
无安装规范和代码文件(仅指令)。安装程序不会下载或写入磁盘上的任何内容;这是最低风险模型。
✓ 凭证需求
该技能声明不需要环境变量、凭据或配置路径。这对于一个静态指导文档是合理的。
✓ 持久化与权限
默认为 false,该技能不请求系统或跨技能配置更改。允许自主调用(平台默认),但该技能无法访问凭据或写入文件。
安全有层次,运行前请审查代码。
运行时依赖
🖥️ OSLinux · macOS · Windows
版本
latestv1.0.02026/2/10
初始发布
● 无害
安装命令 点击复制
官方npx clawhub@latest install http
镜像加速npx clawhub@latest install http --registry https://cn.clawhub-mirror.com
技能文档
HTTP 最佳实践指南
重定向(常见混淆)
- 307 vs 308:两者都保留方法;307 为临时,308 为永久——用于 POST/PUT 重定向
- 301/302 可能改变 POST 为 GET(浏览器行为)——不适用于带有正文的 API 重定向
- 包含
Location头以绝对 URL——相对 URL 可能在旧客户端中失败 - 重定向循环:限制为 5-10 次跟随;无限循环会崩溃客户端
缓存组合
Cache-Control: no-store用于敏感数据——永不写入磁盘no-cache仍然缓存但每次重新验证——不是“不缓存”private, max-age=0, must-revalidate用于用户特定、始终最新的内容public, max-age=31536000, immutable用于版本化的静态资产Vary: Accept-Encoding, Authorization当响应依赖于这些头时——忘记 Vary 会破坏缓存
条件请求
ETag+If-None-Match:适用于 API——基于内容哈希- 强 ETag 与弱 ETag:
"abc"vsW/"abc"——弱 ETag 允许语义等效的响应 If-Match用于乐观锁定:如果资源自读取以来已更改,则更新失败- 412 条件未满足 当
If-Match失败——不是 409 冲突
CORS 预飞请求触发器
- 自定义头(除 Accept、Accept-Language、Content-Language、Content-Type 简单值)
- Content-Type 不是:application/x-www-form-urlencoded、multipart/form-data、text/plain
- PUT、DELETE、PATCH 方法——即使是同源,如果其他条件满足
- ReadableStream 正文——触发预飞
- 预飞根据
Access-Control-Max-Age缓存——设置为 86400 以减少 OPTIONS spam
安全头(始终设置)
Strict-Transport-Security: max-age=31536000; includeSubDomains——HSTS,一旦设置很难撤销X-Content-Type-Options: nosniff——防止 MIME嗅探攻击X-Frame-Options: DENY或SAMEORIGIN——防止点击劫持Content-Security-Policy——复杂但必需;从报告模式开始
范围请求
Accept-Ranges: bytes表示支持——客户端可以请求部分内容Range: bytes=0-1023请求首 1024 字节;bytes=-500请求最后 500 字节- 返回 206 部分内容与
Content-Range: bytes 0-1023/5000 - 416 范围不可满足 如果范围无效——包括
Content-Range: bytes */5000
错误响应最佳实践
- 结构化 JSON 错误:
{"error": {"code": "VALIDATION_FAILED", "message": "...", "details": [...]}} - 包含请求 ID 在错误响应中——启用日志关联
- 不在生产环境中泄露堆栈跟踪——服务器端日志,返回通用消息
- 409 冲突 用于业务规则违反(重复电子邮件、资金不足)——不仅仅是 400
重试模式
- 默认仅重试幂等方法——GET、PUT、DELETE、HEAD
- POST 重试需要幂等性键——
Idempotency-Key: - 指数退避:1s、2s、4s、8s... 带有抖动——防止雷鸣群
- 尊重
Retry-After头——可以是秒或 HTTP 日期 - 设置合理的超时(典型 30s)——不要无限等待
经常遗忘的头部
Vary:必须包括影响响应的头——没有Vary: Origin的 CORS 会破坏Content-Disposition: attachment; filename="report.pdf"用于下载X-Request-ID:如果不存在则生成,向下游服务传播Accept-Language用于本地化响应——尊重并提供优雅的回退
连接行为
- HTTP/1.1 无
Content-Length或分块 = 响应后关闭连接 Transfer-Encoding: chunked用于流式传输——无法设置 Content-Length- HTTP/2 是二进制、多路复用——HTTP 级别无头部阻塞
- WebSocket 升级:GET 与
Connection: Upgrade、Upgrade: websocket
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制