事情的起因在于请求透传这么一个任务,我的认知中,透传需要三步,第一步知道对方的请求方式和参数传递方式,第二步是我应该怎样处理传过来的参数,第三部是透传目的接口的请求方式和参数请求方式。
首先是对于Content-Type的常见格式的认知
常见的媒体格式类型如下:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml : XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON数据格式
- application/pdf :pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
那么回过头来说说请求发起方,当前场景下是curl发起的请求,而我对于curl的参数不是很熟悉,所以整理一下以便参考
排序参数描述用法
-
A
-A/–user-agent 指定客户端的用户代理,默认是 curl/versioncurl -A ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/76.0.3809.100 Safari/537.36’ 192.168.41.203 -v
curl -A ‘’ 192.168.41.203
-
B
-b/–cookie <name=data>向服务器发送 cookie(H)curl -b ‘foo1=bar;foo2=bar2’ 192.168.41.203
curl -b cookies.txt 192.168.41.203
-
C
-c/–cookie-jar 将服务器设置的 cookie 写入一个文件curl -c cookie.txt 192.168.41.203
-C/–continue-at 断点续传。是一个数值,表示从文件头开始计算的要跳过的字节数。如果被设定为 -,那么将自行检测待传输文件的断点位置curl -C - -O ‘http://10.2.19.250/400k.html’ --limit-rate 10k
-
D
-d/–data 以 POST 方式传送数据,请求头会自动加上 Content-Type:application/x-www-form-urlencoded,key=value数据应该是url转义的(H)curl -d ‘name=admin&password=123’ 192.168.41.203
curl -H ‘Content-Type: text/xml’ -d ‘hello’ 10.2.19.250:8181/upload -v #发送 XML 数据
curl -H ‘Content-Type: application/json’ -d ‘{“query”: “cats”}’ 10.2.19.250:8181/upload -v #发送 json 数据
–data-urlencode将发送的数据进行 URL 编码(H)curl --data-urlencode ‘name=admin password=123’ 192.168.41.203
–data-binary将发送的数据进行二进制编码(H)
–data-raw无法读取文件,只能发送字符串(H)
-D/–dump-header将响应头写入文件curl 192.168.41.203 -D test.txt
-
E
-e/–referer设置请求头 Referer,表示请求的来源(H)curl -e ‘a.com’ 192.168.41.203 -v
curl -e ‘’ 192.168.41.203 -v
-
F
-F/–form <name=content>模拟用户在浏览器上“submit”的操作,请求头会自动加上 Content-Type: multipart/form-data(H)curl -F ‘file=@1.html’ ‘http://10.2.19.250:8181/upload’ -v
curl -F ‘name=johnny’ ‘http://10.2.19.250:8181/upload’ -v #提交表单
curl -F ‘file=@1.html;filename=11.html’ ‘http://10.2.19.250:8181/upload’ -v #修改服务器接收到的文件名为 11.html
-
G
-g/–globoff关闭 URL 的通配符功能,允许 URL 中含有字符 {} 和[]curl -g “http://[5af0::2]” -v
-G/–get构造 URL 的查询字符串,以 GET 方式发送数据(H)curl -G -d ‘a=1’ -d ‘b=2’ 192.168.41.203 -v
curl -G --data-urlencode ‘id=1 or 1=2’ 192.168.41.148 -v
-
H
-h/–help显示简要帮助手册curl -h
H/–header
添加 HTTP 请求头curl -H ‘Host:a.com’ 192.168.41.203 -v -
I
-i/–include打印响应头和网页代码curl -i 192.168.41.203
–interface 使用指定网卡传输数据curl --interface en0 www.baidu.com -v
-I/–head向服务器发出 HEAD 请求,打印响应头curl -I 192.168.41.203
-
K
-k/–insecure允许连接到 SSL 站点,而不使用证书curl -k ‘https://192.168.41.205’
-K/–config 从指定的文件中读取选项curl -K curl.options 192.168.41.203
-
L
-L/–location跟随服务器的重定向(H)curl -L 192.168.41.148 -v
–limit-rate 限制请求和响应的带宽,模拟慢网速的环境curl --limit-rate 100k 192.168.41.203 #将带宽限制在每秒 200K 字节(单位还有 m/g)
curl --limit-rate 1 192.168