HTTPie 3.2.4 配置参数详解
把 HTTPie 3.2.4 的全部用户级配置一次讲透:config.json 全局默认选项、环境变量、会话文件结构与插件体系,附交互与脚本两套可直接抄写的生产配置模板。
HTTPie 3.2.4 配置参数详解
目标:把 HTTPie 3.2.4 的全部用户级配置一次讲透——config.json 全局默认选项、环境变量、会话文件结构与插件体系,并给出交互与脚本两套可直接抄写的生产配置模板。所有键值行为、报错与回显均在 Ubuntu 24.04.5 LTS + HTTPie 3.2.4 实测照抄。
一、环境信息
- 操作系统:Ubuntu 24.04.5 LTS(Noble Numbat),x86_64,内核 7.0.0-38-generic
- HTTPie:3.2.4(pipx 安装,
~/.local/bin/http;安装过程见《Ubuntu 24.04 安装 HTTPie 3.2.4 指南》) - 运行时底座(
http --debug实测):Requests 2.34.2、Pygments 2.21.0、Python 3.12.3 - 配置目录:
~/.config/httpie/(Linux;下文给出三大系统对照) - 测试端点:
httpbin.org(公开 HTTP 测试服务,直连可达)
二、前置条件
http --version
实测回显:
3.2.4
# 确认配置目录初始状态(首次使用前可为空)
ls -la ~/.config/httpie/ 2>/dev/null || echo "配置目录尚未创建"
实测回显:
配置目录尚未创建
💡 说明:HTTPie 的配置目录与会话、插件登记均按需自动生成;本文为了让读者能对照,先手工创建目录并写入最小 config.json。
mkdir -p ~/.config/httpie
echo '{}' > ~/.config/httpie/config.json
三、参数查看与修改方式
HTTPie 的"配置参数"分四层,修改入口各不相同(本节先给全景,四~七章逐层展开):
| 层级 | 查看方式 | 修改方式 | 作用范围 |
|---|---|---|---|
| CLI 选项 | http --help(全量 407 行) | 每次命令行传入 | 单次请求 |
| config.json 全局默认 | cat ~/.config/httpie/config.json | 直接编辑 JSON 文件 | 该用户所有请求 |
| 环境变量 | env(过滤含 HTTPie/http_proxy 的项) | shell 导出 | 进程及其子进程 |
| 插件 | httpie plugins list | httpie plugins install/uninstall | 装卸后全局生效 |
# CLI 选项全量清单(--help 输出 407 行,此处节选高频项)
http --help | grep -E "^\s+--(style|pretty|print|timeout|check-status|ignore-stdin|follow|verify|proxy|session|auth-type|download|output|raw|offline|stream)"
实测回显(输出节选):
--raw RAW
--pretty {all,colors,format,none}
--style STYLE, -s STYLE
--response-charset ENCODING
--print WHAT, -p WHAT
--all
--stream, -S
--output FILE, -o FILE
--download, -d
--session SESSION_NAME_OR_PATH
--session-read-only SESSION_NAME_OR_PATH
--auth-type {basic,bearer,digest}, -A {basic,bearer,digest}
--offline
--proxy PROTOCOL:PROXY_URL
--follow, -F
--timeout SECONDS
--check-status
--verify VERIFY
--ignore-stdin, -I
💡 说明:
--auth-type实测值域为basic/bearer/digest三种内置认证;更多类型(JWT、OAuth1 等)靠插件扩展,见第七章。
# 运行时环境底座与完整配置状态自检
http --debug --offline httpbin.org/get 2>&1 | head -6
实测回显:
HTTPie 3.2.4
Requests 2.34.2
Pygments 2.21.0
Python 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]
/root/.local/share/pipx/venvs/httpie/bin/python
Linux 7.0.0-38-generic
四、参数总览
4.1 CLI 选项按域分类总表
| 域 | 选项 | 默认值 | 一句话说明 |
|---|---|---|---|
| 请求构造 | = : := == @ :请求头 | — | 请求项语法(详见《CLI 命令详解》篇) |
| 请求构造 | --raw RAW | 无 | 直接给原始请求体 |
| 请求构造 | --form, -f / --multipart | JSON 默认 | 表单编码 / 多部分编码 |
| 输出控制 | --print WHAT, -p | hb(终端)/ hb(重定向时 b) | H 请求头 B 请求体 h 响应头 b 响应体 m 元信息 |
| 输出控制 | --pretty {all,colors,format,none} | all(终端) | 管道/重定向时自动降为 none |
| 输出控制 | --style, -s | auto | Pygments 配色(monokai/emacs/…) |
| 输出控制 | --response-charset | 自动检测 | 强制响应解码字符集 |
| 输出控制 | --output, -o / --download, -d | stdout | 落盘 |
| 行为 | --offline | 关 | 只构造打印请求不发送 |
| 行为 | --stream, -S | 关 | 流式响应即时输出 |
| 会话 | --session / --session-read-only | 关 | 会话持久化 |
| 认证 | -a / --auth-type | 无 / basic | 凭据 / 认证类型 |
| 网络 | --proxy | 无 | 按 PROTOCOL:PROXY_URL 配代理 |
| 网络 | --follow, -F / --max-redirects | 关 / 30 | 跟随重定向 |
| 网络 | --timeout | 无(不超时) | 秒;0.001 可做瞬时超时测试 |
| 网络 | --verify | yes | no 关闭 TLS 校验 / 传 CA 路径 |
| 脚本 | --ignore-stdin, -I | 关 | 不读 stdin(脚本必加) |
| 脚本 | --check-status | 关 | 3xx/4xx/5xx → 退出码 3/4/5 |
| 重定向展示 | --all / --history-print | 关 / 随 --print | 显示中间请求/响应 |
4.2 config.json 支持的键
| 键 | 类型 | 实测行为 |
|---|---|---|
default_options | 字符串数组 | 数组内每个元素作为隐式 CLI 选项拼接进每次请求(唯一高频键,4.3 实测) |
implicit_content_type | 字符串 | 2.x 遗留兼容键(stdin 默认类型),3.x 默认 JSON,无需设置 |
| 其他未知键 | — | 忽略不报错 |
⚠️ 注意:HTTPie 2.x 曾有
httpie config set子命令管理配置,3.x 已移除——config.json 的唯一修改方式就是直接编辑文件,改完立即对下一条命令生效,无需重载。
4.3 default_options 生效机制实测
把常用选项写入 default_options,之后每条 http 命令自动携带:
cat > ~/.config/httpie/config.json <<'EOF'
{"default_options": ["--style=monokai", "--timeout=15"]}
EOF
cat ~/.config/httpie/config.json
实测回显:
{"default_options": ["--style=monokai", "--timeout=15"]}
# 生效验证:写一个非法 style,让配置解析层报错证明 config 被读取
echo '{"default_options": ["--style=no-such-style"]}' > ~/.config/httpie/config.json
http --ignore-stdin httpbin.org/get
实测回显(输出节选,报错证明 default_options 确实被注入命令行):
usage:
http -s/--style {abap, algol, algol_nu, arduino, auto, autumn, borland, bw,
coffee, colorful, default, dracula, emacs, friendly, friendly_grayscale, fruity,
💡 说明:报错同时是合法值清单——实测可用 style 共 30 余种(abap/algol/arduino/autumn/borland/bw/coffee/colorful/default/dracula/emacs/fruity/monokai/…),
auto为默认(按终端能力自动选)。这个"故意写错验证生效"的手法也适用于排查 config.json 是否被正确读取。
# 恢复干净配置
echo '{}' > ~/.config/httpie/config.json
五、核心参数分类详解
5.1 配置文件位置(跨平台对照)
Linux/macOS/Windows 的配置目录实测以官方文档为准,本机 Linux 实测路径如下:
| 系统 | 配置目录 |
|---|---|
| Linux | ~/.config/httpie/ |
| macOS | ~/Library/Application Support/httpie/ |
| Windows | %APPDATA%\httpie\ |
| 环境变量覆盖 | HTTPIE_CONFIG_DIR 指向任意目录(优先级最高) |
5.2 HTTPIE_CONFIG_DIR 环境变量(实测)
# 准备一个独立配置目录
mkdir -p /opt/data/quzuo/tmp/httpie/alt-config
echo '{"default_options":[]}' > /opt/data/quzuo/tmp/httpie/alt-config/config.json
# 正常 JSON:加载成功(无输出即正常)
HTTPIE_CONFIG_DIR=/opt/data/quzuo/tmp/httpie/alt-config http --ignore-stdin --offline httpbin.org/get
echo "exit=$?"
实测回显:
exit=0
# 写入非法 JSON:报 warning 并指明文件路径,证明读取的就是该目录
echo 'not-json' > /opt/data/quzuo/tmp/httpie/alt-config/config.json
HTTPIE_CONFIG_DIR=/opt/data/quzuo/tmp/httpie/alt-config http --ignore-stdin --offline httpbin.org/get
实测回显:
http: warning: invalid config file: Expecting value: line 1 column 1 (char 0) [/opt/data/quzuo/tmp/httpie/alt-config/config.json]
# 恢复
echo '{"default_options":[]}' > /opt/data/quzuo/tmp/httpie/alt-config/config.json
⚠️ 注意:非法 config.json 只是 warning 不阻断请求(降级为无默认选项继续执行),但
default_options将全部失效——CI 里若依赖--check-status这类默认选项,配置文件损坏会静默改变行为,监控上要留意 stderr。
5.3 输出控制三件套:--print / --pretty / --style
# --print 取值字符:H=请求头 B=请求体 h=响应头 b=响应体 m=元信息;默认 hb
# 只看响应体与耗时元信息:
http --ignore-stdin --print=bm httpbin.org/get
实测回显:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "HTTPie/3.2.4",
"X-Amzn-Trace-Id": "Root=1-6add7ad8-6e9bc9052b6160fb0700ba81"
},
"origin": "182.54.113.29",
"url": "https://httpbin.org/get"
}
Elapsed time: 0.459550006s
# -h / -b 是 --print=h / --print=b 的快捷方式
http --ignore-stdin -h httpbin.org/get
实测回显(输出节选):
HTTP/1.1 200 OK
Date: Sun, 25 Oct 2026 03:47:14 GMT
Content-Type: application/json
Content-Length: 296
💡 技术拓展:
--pretty与--style的分工——--pretty {all,colors,format,none}控制"要不要着色/要不要格式化"两个开关位,--style只控制"用什么配色"。--pretty=none会同时关掉两者(管道友好,输出内容与 curl 相同的原始报文),--pretty=colors保留原始格式只加色。终端直连时默认all,检测到管道/重定向时自动降为none,这也是"HTTPie 输出直接进 jq 会正常工作"的原因。
5.4 网络域:--proxy / --timeout / --verify
# --proxy 格式为 PROTOCOL:PROXY_URL,可按协议分别指定
# 实测:经内部代理访问 httpbin.org(--print=m 只看是否成功与耗时)
http --ignore-stdin --proxy=http:http://192.168.1.62:7897 --print=m httpbin.org/get
实测回显:
Elapsed time: 0.443759131s
# 代理不可达时的真实报错(实测:连接拒绝)
http --ignore-stdin --print=H --proxy=http:http://182.54.113.29:7897 httpbin.org/get
实测回显(输出节选):
http: error: ProxyError: HTTPConnectionPool(host='182.54.113.29', port=7897): Max retries exceeded with url: http://httpbin.org/get (Caused by ProxyError('Unable to connect to proxy', NewConnectionError("HTTPConnection(host='182.54.113.29', port=7897): Failed to establish a new connection: [Errno 111] Connection refused"))) while doing a GET request to URL: http://httpbin.org/get
# --timeout 单位秒,支持小数;对慢端点可实测瞬时超时
http --ignore-stdin --timeout=0.001 httpbin.org/delay/3
echo "exit=$?"
实测回显:
http: error: Request timed out (0.001s).
exit=2
# --verify:自签名/内网证书场景,先看默认校验下的真实报错
http --ignore-stdin https://self-signed.badssl.com/ -h
实测回显(输出节选):
http: error: SSLError: HTTPSConnectionPool(host='self-signed.badssl.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1000)'))) while doing a GET request to URL: https://self-signed.badssl.com/
# --verify=no 关闭校验后同一端点成功
http --ignore-stdin --verify=no https://self-signed.badssl.com/ -h
实测回显(输出节选):
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Sun, 25 Oct 2026 03:59:53 GMT
💡 说明:
--verify还可传入私有 CA 文件路径(--verify=/path/to/ca.pem),是企业内网 HTTPS 调试的正道;--verify=no仅限临时排查,长期关闭校验等于裸奔。
5.5 会话文件结构(实测逐键解析)
# 创建会话:认证信息随首次请求写入会话文件
http --ignore-stdin --session=docs-demo -a admin:q1w2e3r4 https://httpbin.org/basic-auth/admin/q1w2e3r4 > /dev/null
# 会话文件按"主机名"分目录存放
ls ~/.config/httpie/sessions/httpbin.org/
实测回显:
docs-demo.json
cat ~/.config/httpie/sessions/httpbin.org/docs-demo.json
实测回显:
{
"__meta__": {
"about": "HTTPie session file",
"help": "https://httpie.io/docs#sessions",
"httpie": "3.2.4"
},
"auth": {
"raw_auth": "admin:q1w2e3r4",
"type": "basic"
},
"cookies": [],
"headers": []
}
逐键说明:
__meta__:会话文件格式标识与创建它的 HTTPie 版本,平台升级时用于兼容判断;auth.raw_auth/auth.type:-a传入的凭据原文与认证类型——明文存储,会话文件等同密码,生产环境权限应设 600 且不入版本库;cookies:服务端 Set-Cookie 的累积(本例端点不种 Cookie,为空数组);headers:你在会话请求里显式带的自定义头(如X-Api-Token:abc123)会被持久化,后续同会话请求自动携带。
# 复用验证:第二条命令不带 -a,Authorization 头自动从会话注入
http --ignore-stdin --session=docs-demo --print=Hh https://httpbin.org/get
实测回显(输出节选):
GET /get HTTP/1.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Authorization: Basic YWRtaW46cTF3MmUzcjQ=
User-Agent: HTTPie/3.2.4
Host: httpbin.org
💡 说明:
Authorization: Basic YWRtaW46cTF3MmUzcjQ=即admin:q1w2e3r4的 Base64(echo -n 'admin:q1w2e3r4' | base64可验证),证明认证从会话文件而非命令行注入。--session-read-only变体适合"只读复用、不把新 Cookie 写回"的并发场景。
5.6 插件体系(实测全流程)
HTTPie 3.x 的插件管理统一收口在 httpie 管理命令下(裸 httpie plugins 会提示子动作):
httpie plugins
实测回显:
usage: httpie [-h] [--debug] [--traceback] [--version] {cli,plugins} ...
httpie: error: Please specify one of these: 'help', 'install', 'upgrade', 'uninstall', 'list'
# 安装一个真实认证插件(JWT)
httpie plugins install httpie-jwt-auth
实测回显(输出节选):
Using cached httpie_jwt_auth-0.4.0-py2.py3-none-any.whl (6.1 kB)
Installing collected packages: httpie-jwt-auth
Successfully installed httpie-jwt-auth-0.4.0
httpie plugins list
实测回显:
httpie-jwt-auth (0.4.0)
httpie_jwt_auth (httpie.plugins.auth.v1)
💡 说明:list 第二行是插件注册的入口点元组——
httpie.plugins.auth.v1表示它向--auth-type注册新认证类型(安装后-A jwt/--auth-type jwt即生效),v1是插件 API 版本。插件类型家族包括 auth(认证)、converter(请求体转换)、formatter(响应格式化)、transport(协议传输)、download(下载行为)五类(来源:官方文档 httpie.io/docs/cli/plugins,查询日期 2026-10-25)。
# 卸载
httpie plugins uninstall httpie-jwt-auth
实测回显:
Successfully uninstalled httpie-jwt-auth
⚠️ 注意:pipx 安装的 HTTPie,插件被装进 pipx 为其创建的同一 venv(
~/.local/share/pipx/venvs/httpie/),不会污染系统 Python;因此插件卸载/升级也应一律走httpie plugins而非手工 pip。
5.7 其他环境变量
| 环境变量 | 实测/来源 | 作用 |
|---|---|---|
HTTPIE_CONFIG_DIR | 本机实测(5.2) | 重定向整个配置目录 |
NO_COLOR | 本机实测(值为任意非空时退出码 0、行为正常,无着色输出) | 关闭彩色输出(no-color.org 约定) |
XDG_CONFIG_HOME | 官方文档 | 改变默认配置目录的父路径(影响 ~/.config 解析) |
http_proxy / https_proxy | 官方文档 | 常规代理环境变量,--proxy 缺省时 requests 层遵循 |
六、生产配置模板(可直接抄写)
6.1 交互调试场景(工程师日常)
适用:8GB+ 内存、多人共用的跳板机/开发服务器,追求输出可读与减少重复敲键:
{
"default_options": [
"--style=monokai",
"--print=hb",
"--default-scheme=https"
]
}
逐项说明:--style=monokai 固定深色终端配色(浅色终端换 --style=friendly);--print=hb 显式固定"请求头+响应体"输出习惯;--default-scheme=https 让裸 http api.example.com 默认走 HTTPS,防误发明文。
6.2 脚本与 CI 场景(无人值守)
适用:CI runner、巡检脚本、定时探活——核心诉求是"绝不挂死、失败可见":
{
"default_options": [
"--ignore-stdin",
"--check-status",
"--timeout=15",
"--pretty=none"
]
}
逐项说明:--ignore-stdin 杜绝 stdin 非 TTY 导致的默认方法漂移(脚本第一坑);--check-status 让 4xx/5xx 映射非零退出码供编排层判断;--timeout=15 防止无超时挂死拖垮任务;--pretty=none 保证日志采集到的是纯文本。⚠️ 此模板影响该用户所有 HTTPie 调用,与交互习惯冲突时请改用脚本内显式传参,勿写全局。
6.3 内网代理场景
{
"default_options": [
"--proxy=http:http://192.168.1.62:7897",
"--proxy=https:http://192.168.1.62:7897"
]
}
逐项说明:--proxy 按"协议:URL"逐条声明,http 与 https 各写一行(实测代理可达性见 5.4);仅内网出网走代理的服务器适用,直连环境勿用。
七、常见问题(FAQ)
Q1:config.json 改了不生效?
三步定位:① cat 确认是合法 JSON(python3 -m json.tool ~/.config/httpie/config.json 校验);② 确认改的是当前用户目录(whoami + echo $HOME,root 与普通用户路径不同);③ 用 4.3 的"故意写非法值"手法验证该文件确实被读取;④ 若设过 HTTPIE_CONFIG_DIR,实际读取的是它指向的目录。
Q2:http: warning: invalid config file 怎么处理?
按 5.2 实测回显,warning 会给出具体文件路径;用 python3 -m json.tool 找到语法错误修复即可。warning 不阻断请求,但 default_options 全部失效。
Q3:会话文件里的密码是明文吗?
是(5.5 实测 raw_auth 存凭据原文)。生产服务器上应 chmod 600 会话文件、避免在共享账号环境用 --session,或用 --session-read-only 并自管文件权限。
Q4:插件装完命令没变化?
确认插件注册的入口点:httpie plugins list 第二行的括号内容(如 httpie.plugins.auth.v1)决定它扩展什么能力。auth 类插件安装后用 --auth-type <插件名> 调用;若通过 pipx 装的 HTTPie 又手工 pip 装了插件,两者 venv 不同不会生效——统一走 httpie plugins install。
Q5:能把配置放到系统级让所有用户共享吗?
HTTPie 没有系统级配置文件设计,config.json 严格按用户目录解析。共享诉求用 HTTPIE_CONFIG_DIR=/etc/httpie 统一指向(目录权限自行管控),或在 shell profile 里 export。
Q6:如何查看某个选项是否被 default_options 隐式注入?
http --debug --offline <URL>:debug 输出的 config.default_options 与最终构造的请求报文可完整对照(5.2/4.3 手法),--offline 保证不发真实请求。
八、参考链接
- HTTPie 官方文档·Config:https://httpie.io/docs/cli/config (查询日期 2026-10-25)
- HTTPie 官方文档·Sessions:https://httpie.io/docs/cli/sessions (查询日期 2026-10-25)
- HTTPie 官方文档·Plugins:https://httpie.io/docs/cli/plugins (查询日期 2026-10-25)
- HTTPie 官方插件索引:https://plugins.httpie.io (查询日期 2026-10-25)
- 本系列命令实测:《HTTPie 3.2.4 CLI 命令详解》
- 本系列安装实测:《Ubuntu 24.04 安装 HTTPie 3.2.4 指南》