gpt4 book ai didi

apache - curl 命令将 gzip 压缩的 POST 正文发送到 apache 服务器

转载 作者:行者123 更新时间:2023-12-02 10:55:35 26 4
gpt4 key购买 nike

在我的 apache 2.2 服务器上正确激活 mod_deflate 后,我尝试通过curl 命令行发送 gzipped 正文。

我见过的所有教程都说添加 -H'Content-Encoding: gzip' 并 gzip 我的正文文件,但是这失败了:

echo '{ "mydummy" : "json" }' > body
gzip body
curl -v -i http://localhost/mymodule -H'Content-Encoding: gzip' --data-binary @body.gz

我的 apache 模块接收到 0 字节

在我的 apache error.log 中,如果 LogLevel 设置为调试,我得到:
[Thu Jun 01 14:29:03 2017] [debug] mod_deflate.c(900): [client 127.0.0.1] 无法膨胀输入:无法处理 deflate 标志

最佳答案

问题是 mod_deflate 不喜欢这里显示的 gzip header :

hexdump -C body.gz
00000000 1f 8b 08 08 20 08 30 59 00 03 62 6f 64 79 00 ab |.... .0Y..body..|
00000010 56 50 ca ad 4c 29 cd cd ad 54 52 b0 52 50 ca 2a |VP..L)...TR.RP.*|
00000020 ce cf 53 52 a8 e5 02 00 a6 6a 24 99 17 00 00 00 |..SR.....j$.....|
00000030

解决方案很简单,将其交给 gzip,无需中间文件步骤,如果采用流,它不会打印 header ,apache 会喜欢正文!

echo '{ "mydummy" : "json" }' | gzip > body.gz
curl -v -i http://localhost/mymodule -H'Content-Encoding: gzip' --data-binary @body.gz

这有效,apache 模块接收解压后的字节。

您可以在这里看到 header 差异,您不再在 gzip 文件中看到文件名(正文):

hexdump -C body.gz
00000000 1f 8b 08 00 08 0a 30 59 00 03 ab 56 50 ca ad 4c |......0Y...VP..L|
00000010 29 cd cd ad 54 52 b0 52 50 ca 2a ce cf 53 52 a8 |)...TR.RP.*..SR.|
00000020 e5 02 00 a6 6a 24 99 17 00 00 00 |....j$.....|
0000002b

关于apache - curl 命令将 gzip 压缩的 POST 正文发送到 apache 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com