การเชื่อมต่อเปิดขึ้น ส่วนหัวของคำขอถูกส่งออกไป ไฟล์ดูเหมือนไม่ขยับ คำอธิบายหนึ่งคือไคลเอนต์กำลังรอการตอบกลับต่อ Expect: 100-continue ก่อนจะส่งเนื้อหา

กลไกนี้อนุญาตให้ผู้รับปฏิเสธคำขอจากส่วนหัวก่อนที่จะมีการส่งการอัปโหลดที่อาจมีขนาดใหญ่ ลำดับความสำเร็จปกติคือ:

request headers → 100 Continue → request body → final response

100 เป็นข้อมูล: มันอนุญาตให้ไคลเอนต์ดำเนินการต่อ แต่ไม่ได้หมายความว่าไฟล์ถูกจัดเก็บหรือการดำเนินการของแอปพลิเคชันสำเร็จแล้ว Git push ที่ส่งคืน HTTP 417 เป็นกรณีรูปธรรมหนึ่งกรณีของความคาดหวังที่ไม่เป็นไปตามที่ตั้งไว้

ค้นหาว่าไคลเอนต์ได้รับการตอบกลับใด

สิ่งที่สังเกตความหมายที่ต้องตรวจสอบ
100 Continueไคลเอนต์สามารถดำเนินการต่อด้วยเนื้อหา
การปฏิเสธขั้นสุดท้ายก่อนเนื้อหาการดำเนินการถูกปฏิเสธในขั้นส่วนหัว
ไม่มีการตอบกลับชั่วคราวตามที่คาดไว้นโยบายการรอของไคลเอนต์และการจัดการบนเส้นทางนั้น

curl มีการตั้งค่าการรอ expect-continue แยกต่างหาก หากการรอของ libcurl นั้นหมดเวลาโดยไม่มีการตอบกลับตามที่คาดไว้ มันจะส่งเนื้อหาไปอยู่ดี การหมดเวลาไม่ใช่ความล้มเหลวทั้งหมดของการถ่ายโอนโดยอัตโนมัติ การตั้งค่านี้แยกจากเวลาที่อนุญาตสำหรับการถ่ายโอนทั้งหมด การเพิ่มเวลาหลังอาจทำให้การหยุดชั่วคราวเริ่มต้นเดิมยังไม่ได้รับการอธิบาย

ระบุด้วยว่าบทสนทนา HTTP ใดที่นำ Expect ไป ด้วย CONNECT ปกติไปยังปลายทาง HTTPS การแลกเปลี่ยนการอัปโหลดของเว็บไซต์อยู่ภายใน TLS พร็อกซีส่งต่อไม่ได้ตรวจสอบส่วนหัวความคาดหวังภายในนั้นโดยตรง เส้นทางการดักจับหรือการส่งต่อแบบข้อความธรรมดานั้นแตกต่างออกไป

การลบความคาดหวังอาจเป็นทางเลือกด้านความเข้ากันได้ที่ตั้งใจ แต่หมายความว่าไคลเอนต์อาจเริ่มส่งเนื้อหาขนาดใหญ่ก่อนจะทราบถึงการปฏิเสธแต่เนิ่น ๆ เปรียบเทียบพฤติกรรมนั้นกับความต้องการจริง อย่าอธิบายวิธีแก้ไขเชิงประวัติศาสตร์สำหรับพร็อกซีเก่าเป็นคำแนะนำสากลให้ลบส่วนหัวออกจากการอัปโหลดทุกครั้ง

บทความที่เกี่ยวข้อง