Perché curl sta inviando la riga di comando prima del corpo del messaggio in un HTTP PUT?
Domanda
Sto inviando il comando (riga interrotta per leggibilità):
curl -H"X-RequestIsAbsolutePath: F" \
-T /tmp/out \
-H'Content-Type: application/xml' \
"http://localhost:8182/metadata/036-Rotated.JPG"
Sto inviando un corpo di messaggio di XML. Ricevo un reclamo dal parser XML sul server per il contenuto non consentito nel prologo. Ho aggiunto un'opzione --trace-acii alla riga di comando e vedo:
=> 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>.
Perché curl sta inviando la stessa riga di comando come parte del corpo del messaggio? Naturalmente il parser XML si lamenterà. Come posso ottenere il curl per smettere di farlo e inviare solo il contenuto del file passato come argomento all'opzione -T?
Cordiali saluti: ho catturato il testo non elaborato inviato sul server e, sì, la riga di comando è stata effettivamente inviata. FYI # 2: sto usando l'ultimo ricciolo (7.19.4) su Mac OS X.
Soluzione
Perché curl sta inviando la stessa riga di comando come parte del corpo del messaggio?
Non lo fa. Sei sicuro di non aver in qualche modo messo il comando in / tmp / out
?
curl non ha nemmeno accesso alla riga di comando come visto nella tua traccia ascii, poiché cose come le virgolette vengono interpretate dalla shell prima che vengano passate al programma.