curlがHTTP PUTのメッセージ本文の前にコマンドラインを送信するのはなぜですか?

StackOverflow https://stackoverflow.com/questions/821389

  •  03-07-2019
  •  | 
  •  

質問

コマンドを発行しています(読みやすいように改行しています):

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トレースで見られるようにコマンドラインにアクセスすることさえできません。引用符のようなものはプログラムに渡される前にシェルによって解釈されるからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top