You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用curl或其他命令从文件加载HTTP请求并发起请求

实现方案

curl 实现方式

curl 没有直接读取完整原始HTTP请求报文(包含首行请求行)的单参数方案,但是可以通过简单的命令组合实现,不需要额外安装工具,适配任意GET/POST等请求方法。
假设你的请求内容存储在request.txt中,执行以下通用命令即可自动解析报文发起请求:

# 提取首行的请求方法、请求路径
read -r METHOD REQ_PATH _ < request.txt
# 提取Host头里的域名
HOST=$(grep '^Host: ' request.txt | awk '{print $2}')
# 跳过首行请求行,剩余内容作为请求头传入curl
curl -X "$METHOD" "https://$HOST$REQ_PATH" -H <(tail -n +2 request.txt)

如果是POST等带请求体的请求,只需要在request.txt里的请求头结束后空一行,再写入请求体内容,额外加一步提取请求体传给curl的-d参数即可。

零解析替代方案

如果不想做任何报文拆分,想要把文件里存储的原始HTTP报文原封不动发出,直接用底层网络工具直连服务器发送是最省事的选择,完全不需要做格式适配,支持任意符合HTTP规范的请求:

  • 普通HTTP请求直接用系统自带的nc(netcat)即可:
# 提取Host头,默认走80端口
HOST=$(grep '^Host: ' request.txt | awk '{print $2}')
nc $HOST 80 < request.txt
  • HTTPS请求可以用ncat(nmap套件附带工具)或者socat:
HOST=$(grep '^Host: ' request.txt | awk '{print $2}')
# 用ncat发送HTTPS请求
ncat --ssl $HOST 443 < request.txt

# 或者用socat发送HTTPS请求
socat - OPENSSL:$HOST:443 < request.txt

注意:使用原始报文直连发送时,请保证报文格式符合HTTP规范:HTTP/1.1请求必须携带正确的Host头,带请求体的请求需要填写和body长度一致的Content-Length头,否则服务器可能无法正常解析请求。

除此之外,httpie、rawhttp等第三方HTTP命令行工具也能实现类似需求,但这类工具大多需要额外安装,对原始报文发送的适配性反而不如上述底层工具直接。

内容的提问来源于stack exchange,提问作者Akshay Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:27:35