Sambungan dibuka. Pengepala permintaan keluar. Fail kelihatan tidak bergerak. Satu penjelasan ialah klien sedang menunggu respons terhadap Expect: 100-continue sebelum menghantar badannya.

Mekanisme ini membolehkan penerima menolak permintaan berdasarkan pengepalanya sebelum muat naik yang mungkin besar dihantar. Urutan kejayaan biasa ialah:

request headers → 100 Continue → request body → final response

100 adalah bermaklumat: ia membenarkan klien meneruskan, tetapi tidak bermakna fail telah disimpan atau operasi aplikasi telah berjaya. Git push yang mengembalikan HTTP 417 ialah satu kes kegagalan jangkaan yang konkrit.

Kenal pasti respons yang diterima oleh klien

PemerhatianMaksud untuk disiasat
100 ContinueKlien boleh meneruskan dengan badan
Penolakan muktamad sebelum badanOperasi ditolak pada peringkat pengepala
Tiada respons sementara yang dijangkaDasar menunggu klien dan pengendalian pada laluan itu

curl mendedahkan tetapan tunggu expect-continue yang khusus. Jika tunggu libcurl itu tamat tanpa respons yang dijangka, ia tetap menghantar badan; tamat tempoh bukan secara automatik bermakna keseluruhan pemindahan gagal. Tetapan ini berasingan daripada masa yang dibenarkan untuk keseluruhan pemindahan. Meningkatkan yang terakhir boleh membiarkan jeda awal yang sama tidak dijelaskan.

Kenal pasti juga perbualan HTTP mana yang membawa Expect. Dengan CONNECT biasa ke destinasi HTTPS, pertukaran muat naik laman web berada di dalam TLS; proksi hadapan tidak semata-mata memeriksa pengepala jangkaan dalamannya. Laluan pintasan atau penghantaran teks biasa adalah berbeza.

Membuang jangkaan boleh menjadi pilihan keserasian yang disengajakan, tetapi ia bermakna klien mungkin mula menghantar badan yang besar sebelum mengetahui tentang penolakan awal. Bandingkan tingkah laku itu dengan keperluan sebenar. Jangan gambarkan penyelesaian sejarah untuk proksi lama sebagai arahan sejagat untuk membuang pengepala daripada setiap muat naik.

Artikel berkaitan