如何使用Chrome"复制为cURL"对于Windows上的multipart / form-data post请求

时间:2015-06-25 10:33:55

标签: windows forms curl google-chrome-devtools

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

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

1 个答案:

答案 0 :(得分:24)

Chrome以及其他实际上的浏览器在将多部分Formpost转换为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]

我把[内容]留在了那里,但是应该用area字段中您实际想要的内容替换它。如果愿意,也可以从文件传递它。

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

h2c-要卷曲的标题

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