Warum sendet Curl die Befehlszeile vor dem Meldungsgremium in einem HTTP?
Frage
Ich stelle den Befehl aus (Zeile für die Lesbarkeit gebrochen):
curl -H"X-RequestIsAbsolutePath: F" \
-T /tmp/out \
-H'Content-Type: application/xml' \
"http://localhost:8182/metadata/036-Rotated.JPG"
Ich sende eine Nachricht von XML. Ich bekomme eine Beschwerde vom XML -Parser auf dem Server über Inhalte, die im Prolog nicht zulässig sind. Ich habe der Befehlszeile eine Option "TRACE-ACII" hinzugefügt und sehen Sie:
=> 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>.
Warum sendet Curl die Befehlszeile selbst als Teil des Nachrichtenkörpers? Natürlich wird sich der XML -Parser beschweren. Wie kann ich Curl dazu bringen, dies zu beenden und nur den Inhalt der Datei als Argument an die Option -t zu senden?
Zu Ihrer Information: Ich habe den Rohtext erfasst, der auf dem Server gesendet wird, und ja, die Befehlszeile wird wirklich gesendet. FYI#2: Ich verwende die neueste Curl (7.19.4) unter Mac OS X.
Lösung
Warum sendet Curl die Befehlszeile selbst als Teil des Nachrichtenkörpers?
Es tut es nicht. Sind Sie sicher, dass Sie den Befehl nicht irgendwie eingelegt haben /tmp/out
?
Curl hat nicht einmal Zugriff auf die Befehlszeile, wie in Ihrer ASCII-Spur zu sehen ist, da Dinge wie die Zitatmarken von der Shell interpretiert werden, bevor sie an das Programm übergeben werden.