如何在Windows上使用Chrome的"复制为cURL"来处理多部分/表单数据发布请求

Kle*_*ack 8 forms windows curl google-chrome-devtools

我正在为Web应用程序开发一个模块.要触发此模块,我需要向服务器提交一些数据.对于简单的表单,从开发人员工具"复制为cURL"工作正常(使用来自msys [git]的curl),但是对于具有multipart/form-data的post请求,复制的字符串既不能用于windows shell(cmd)也不能用于bash (表格msys); 复制的文本类似于

curl "http://myserver.local" -H "Origin: http://wiki.selfhtml.org" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryntXdlWbYXAVwCIMU" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "Cache-Control: max-age=0" -H "Referer: http://wiki.selfhtml.org/extensions/Selfhtml/frickl.php/Beispiel:HTML_form-Element1.html" -H "Connection: keep-alive" --data-binary "------WebKitFormBoundaryntXdlWbYXAVwCIMU"^
"Content-Disposition: form-data; name=""area"""^

"multi"^
"line"^
"------WebKitFormBoundaryntXdlWbYXAVwCIMU--"^
"" --compressed

有什么办法,我可以使用它或将其转换为可用的东西吗?

Dan*_*erg 29

实际上,Chrome 以及其他浏览器在将多部分表单发布为 curl 命令行方面做得相当糟糕。

更方便的 curl 命令行不会--data-binary用于此目的,它会使用--form. 然后你想要--form每个输入字段一个。

在您的情况下,它可能看起来像(此处插入反斜杠以提高可见性):

curl "http://myserver.local" \
 --compressed \
 -H "Origin: http://wiki.selfhtml.org" \
 -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36" \
 -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" \
 -H "Cache-Control: max-age=0" \
 -e "http://wiki.selfhtml.org/extensions/Selfhtml/frickl.php/Beispiel:HTML_form-Element1.html" \
 -F area=[contents]
Run Code Online (Sandbox Code Playgroud)

我把 [contents] 留在了那里,但应该用你在area现场真正想要的来代替它。如果您愿意,也可以从文件中传递它。

我删除了两个不必要的-H用途,并替换了两个以使用直接卷曲选项。

h2c - 要卷曲的标题

对未来的建议:找出要使用 curl 命令行重现的确切 HTTP 标头跟踪,并将其粘贴到https://curl.se/h2c/

  • 你确实意识到这是,呃,curl 的创建者 (24认同)
  • 1. **Chrome 还没有**修复这个问题,即使在五年后的今天的最新版本中也没有解决这个问题。2.我的命令行版本*确实*发送相同的请求,否则还有什么意义? (15认同)