我正在为 Web 应用程序开发一个模块。要触发这个模块,我需要向服务器提交一些数据。对于简单的表格,Copy as cURL
在 Chrome 开发者工具中工作正常(使用来自 msys[git] 的 curl),但是对于带有 multipart/form-data
的 post 请求, 复制的字符串在 windows shell (cmd) 和 bash (form msys) 中均不可用;复制的文本类似于:
curl“http://myserver.local”-H“来源:http://wiki.selfhtml.org”-H“接受编码:gzip,放气”-H“接受语言:de-DE,de;q =0.8,en-US;q=0.6,en;q=0.4"-H "用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"-H "内容类型:multipart/form-data;边界=----WebKitFormBoundaryntXdlWbYXAVwCIMU"-H "接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, */*;q=0.8"-H "缓存控制:max-age=0"-H "引用:http://wiki.selfhtml.org/extensions/Selfhtml/frickl.php/Beispiel:HTML_form-Element1。 html"-H "连接:保持事件"--data-binary "-----WebKitFormBoundaryntXdlWbYXAVwCIMU"^
“内容处置:表格数据;名称=”“区域”“”^
“多”^
“线”^
"-----WebKitFormBoundaryntXdlWbYXAVwCIMU--"^
""-- 压缩的
有什么办法可以使用它或将其转换为可用的东西吗?
最佳答案
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]
我将 [contents] 留在了那里,但它应该替换为 area
字段中您真正想要的内容。如果您愿意,也可以从文件中传递它。我删除了两个不必要的
-H
使用,并替换了两个以使用直接 curl 选项。h2c - curl 的标题
对 future 的建议:找出您想要使用 curl 命令行重现的确切 HTTP header 跟踪,并将其粘贴到 https://curl.se/h2c/ 处。
关于windows - 如何在 Windows 上将 Chrome 的 "Copy as cURL"用于多部分/表单数据发布请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047882/