ฉันได้รับสถานะ 411 จาก nginx เมื่อพยายามทำ PUT โดยไม่ระบุความยาวของเนื้อหา มีวิธีใดในการปิดใช้งานสิ่งนี้ไม่ให้เกิดขึ้น
ฉันได้รับสถานะ 411 จาก nginx เมื่อพยายามทำ PUT โดยไม่ระบุความยาวของเนื้อหา มีวิธีใดในการปิดใช้งานสิ่งนี้ไม่ให้เกิดขึ้น
คำตอบ:
คุณสามารถลองเพิ่มลงในข้อความค้นหาของคุณ:
curl -i -X PUT -H 'ความยาวเนื้อหา: 0' ' http://www.example.com/test '
ลองติดตั้งHttpChunkinModuleหรืออัปเดตNginx เป็น 1.3.9+
โมดูลนี้ไม่จำเป็นสำหรับ Nginx 1.3.9+ อีกต่อไปเนื่องจากตั้งแต่ 1.3.9 แกน Nginx มีการสนับสนุนในตัวสำหรับเนื้อหาคำขอที่มีการเปลี่ยนแปลง
คำขอ PUT ต้องการความยาวเนื้อหา ไม่ใช่ Nginx แต่เป็น HTTP ที่ทำตามข้อกำหนดนี้ คำขอ PUT เช่นคำขอ POST จำเป็นต้องมีเนื้อหาเนื้อหา เนื้อความนั้นอาจมีความยาวเป็นศูนย์ แต่ถ้าเป็นเช่นนั้นคุณต้องพูดอย่างชัดเจน เห็นได้ชัดว่าคุณไม่สามารถสันนิษฐานได้ว่าเนื้อหาจะดำเนินต่อไปจนกว่าการเชื่อมต่อจะถูกปิด (ซึ่งเป็นสิ่งที่ส่วนหัวที่มีความยาวเนื้อหาขาดหายไป) เพราะเซิร์ฟเวอร์จะต้องสามารถตอบสนองต่อคำขอก่อนที่จะปิดการเชื่อมต่อ
คำถามเก่า ๆ แต่เนื่องจากฉันพบสิ่งนี้จากการค้นหาเว็บ:
NginX 1.3.9 และสูงกว่ารองรับ "การโอนถ่ายการเข้ารหัส: แยก" ออกจากกล่องสำหรับ POST และ PUT
ด้วยการถ่ายโอนแบบแยกชิ้นคุณสามารถส่งไฟล์โดยไม่ต้องตั้งค่าความยาวเนื้อหาก่อน