لماذا يتم إرسال Curl إلى سطر الأوامر قبل وضع جسم الرسالة في HTTP؟
سؤال
أنا أصدر الأمر (الخط المكسور لقدرة على القراءة):
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>.
لماذا يرسل Curl سطر الأوامر نفسه كجزء من جسم الرسالة؟ بالطبع سوف يشكو محلل XML. كيف يمكنني الحصول على حليقة للتوقف عن القيام بذلك وإرسال محتويات الملف فقط تم تمريرها كوسيطة لخيار -T؟
لمعلوماتك: لقد التقطت النص الخام الذي يتم إرساله على الخادم ، ونعم ، يتم إرسال سطر الأوامر حقًا. FYI#2: أنا أستخدم أحدث حليقة (7.19.4) على Mac OS X.
المحلول
لماذا يرسل Curl سطر الأوامر نفسه كجزء من جسم الرسالة؟
لا. هل أنت متأكد من أنك لم تضع الأمر بطريقة أو بأخرى /tmp/out
?
لا يمكن حتى الوصول إلى Curl الوصول إلى سطر الأوامر كما هو موضح في تتبع ASCII الخاص بك ، حيث يتم تفسير أشياء مثل علامات الاقتباس بواسطة القشرة قبل نقلها إلى البرنامج.