如何在 bash 中计算对 API 的 POST 请求的内容长度?
How to calculate Content-Length of a POST request to API in bash?
我正在使用 bash 脚本将 POST 请求发送到 RESTful API。
内容长度不正确。请大家帮忙看看是不是我算错了
POST 请求是否在我的请求中添加了更多字节?
请求正文(除了信息用 X、x 或 0 屏蔽之外,这与正文完全相同):
--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--1234--
我将其设置为 271,它 API 捕获了以下内容:
--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
我的建议是不要重新发明轮子。 cURL 等工具以方便可靠的方式创建那些 multipart/form-data 请求,并且无需计算 Content-Length靠自己:
以下是将请求指定为 cURL 命令的方法:
curl \
--request POST \
--header 'Content-Type: multipart/form-data' \
--form 'xxxxx=XXX-XX' \
--form 'xxx_xxxx=XXXX00000000Xx0000000000000000000XX00.pdf' \
--form 'xxx_xx=XXXX00000000Xx0000000000000000000XX00' \
$'http://example.com/'
这是您生成的原始请求的外观。请注意,cURL 包含正确的 Content-Length header:
POST / HTTP/1.1
Host: example.com
User-Agent: curl/7.60.0
Accept: */*
Content-Length: 416
Content-Type: multipart/form-data; boundary=------------------------b5a1c465b6242b10
Connection: close
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--------------------------b5a1c465b6242b10--
我正在使用 bash 脚本将 POST 请求发送到 RESTful API。
内容长度不正确。请大家帮忙看看是不是我算错了
POST 请求是否在我的请求中添加了更多字节?
请求正文(除了信息用 X、x 或 0 屏蔽之外,这与正文完全相同):
--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--1234--
我将其设置为 271,它 API 捕获了以下内容:
--1234
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--1234
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--1234
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
我的建议是不要重新发明轮子。 cURL 等工具以方便可靠的方式创建那些 multipart/form-data 请求,并且无需计算 Content-Length靠自己:
以下是将请求指定为 cURL 命令的方法:
curl \
--request POST \
--header 'Content-Type: multipart/form-data' \
--form 'xxxxx=XXX-XX' \
--form 'xxx_xxxx=XXXX00000000Xx0000000000000000000XX00.pdf' \
--form 'xxx_xx=XXXX00000000Xx0000000000000000000XX00' \
$'http://example.com/'
这是您生成的原始请求的外观。请注意,cURL 包含正确的 Content-Length header:
POST / HTTP/1.1
Host: example.com
User-Agent: curl/7.60.0
Accept: */*
Content-Length: 416
Content-Type: multipart/form-data; boundary=------------------------b5a1c465b6242b10
Connection: close
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxxxx"
XXX-XX
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xxxx"
XXXX00000000Xx0000000000000000000XX00.pdf
--------------------------b5a1c465b6242b10
Content-Disposition: form-data; name="xxx_xx"
XXXX00000000Xx0000000000000000000XX00
--------------------------b5a1c465b6242b10--