curlがHTTP PUTのメッセージ本文の前にコマンドラインを送信するのはなぜですか?
質問
コマンドを発行しています(読みやすいように改行しています):
curl -H"X-RequestIsAbsolutePath: F" \
-T /tmp/out \
-H'Content-Type: application/xml' \
"http://localhost:8182/metadata/036-Rotated.JPG"
XMLのメッセージ本文を送信しています。プロローグで許可されていないコンテンツについて、サーバー上のXMLパーサーから苦情を受け取りました。コマンドラインに--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>.
カールがメッセージ本文の一部としてコマンドライン自体を送信するのはなぜですか?もちろん、XMLパーサーは文句を言います。 curlがそれをやめ、引数として渡されたファイルの内容だけを-Tオプションに送信するにはどうすればよいですか?
FYI:サーバーで送信される生のテキストをキャプチャしました。はい、コマンドラインは実際に送信されています。 FYI#2:Mac OS Xで最新のcurl(7.19.4)を使用しています。
解決
curlがメッセージ本文の一部としてコマンドライン自体を送信するのはなぜですか?
そうではありません。どういうわけか、コマンドを / tmp / out
に入れていないのですか?
curlはasciiトレースで見られるようにコマンドラインにアクセスすることさえできません。引用符のようなものはプログラムに渡される前にシェルによって解釈されるからです。
所属していません StackOverflow