首页 文章

为什么curl在HTTP PUT中的消息体之前发送命令行?

提问于
浏览
1

我正在发出命令(为便于阅读而破坏了一行):

curl -H"X-RequestIsAbsolutePath: F" \
-T /tmp/out \
-H'Content-Type: application/xml' \
"http://localhost:8182/metadata/036-Rotated.JPG"

我正在发送一个XML消息体 . 我从服务器上的XML解析器那里收到关于prolog中不允许的内容的投诉 . 我在命令行中添加了一个--trace-acii选项,并查看:

=> Send header, 270 bytes (0x10e)
0000: PUT /metadata/036-Rotated.JPG HTTP/1.1
0028: User-Agent: curl/7.19.4 (i386-apple-darwin9.6.0) libcurl/7.19.4
0068: OpenSSL/0.9.8i zlib/1.2.3
0083: Host: localhost:8182
0099: Accept: */*
00a6: X-RequestIsAbsolutePath: F
00c2: Content-Type: application/xml
00e1: Content-Length: 235
00f6: Expect: 100-continue
010c:
== Info: Done waiting for 100-continue
=> Send data, 235 bytes (0xeb)
0000: curl -v -H"X-RequestIsAbsolutePath: F" "http://localhost:8182/me
0040: tadata/036-Original.JPG".<metadata>.  <Core>.    <ImageOrientati
0080: on editable="1" type="unsignedShort">.      <value raw="3"/>.
00c0:  </ImageOrientation>.  </Core>.</metadata>.

为什么curl将命令行本身作为消息体的一部分发送?当然XML解析器会抱怨 . 如何让curl停止这样做并仅将作为参数传递的文件内容发送到-T选项?

仅供参考:我已经捕获了服务器上发送的原始文本,是的,命令行确实正在发送 . 仅供参考#2:我在Mac OS X上使用最新的卷曲(7.19.4) .

1 回答

  • 2

    为什么curl将命令行本身作为消息体的一部分发送?

    它没有't. Are you sure that you haven'以某种方式将命令放在 /tmp/out 中?

    curl甚至无法访问ascii trace中的命令行,因为引用标记之类的东西在传递给程序之前由shell解释 .

相关问题