HTTP Yükleme Duraklamaları ve Expect: 100-continue
Expect: 100-continue alışverişini tanıyın ve kısa karar noktasını, veri aktarılırken takılan bir yüklemeden ayırın.
Bağlantı açılır. İstek başlıkları çıkar. Dosya hareket etmiyormuş gibi görünür. Bir açıklama, istemcinin gövdesini göndermeden önce Expect: 100-continue için bir yanıt beklediğidir.
Mekanizma, alıcının potansiyel olarak büyük bir yükleme gönderilmeden önce isteği başlıklarından reddetmesini sağlar. Olağan başarılı sıra şudur:
request headers → 100 Continue → request body → final response
100 bilgilendiricidir: istemcinin devam etmesine izin verir, ancak dosyanın saklandığı veya uygulama işleminin başarılı olduğu anlamına gelmez. HTTP 417 döndüren bir Git push, somut bir beklenti başarısızlığı vakasıdır.
İstemcinin hangi yanıtı aldığını bulun
| Gözlem | Neyin araştırılacağı |
|---|---|
| 100 Continue | İstemci gövdeyle devam edebilir |
| Gövdeden önce kesin bir ret | İşlem başlık aşamasında reddedildi |
| Beklenen geçici yanıt yok | İstemcinin bekleme politikası ve o yoldaki işleyiş |
curl, expect-continue beklemesi için ayrı bir ayar sunar. Bu libcurl beklemesi beklenen yanıt olmadan sona ererse, gövdeyi yine de gönderir; sürenin dolması tek başına tüm aktarımın başarısız olduğu anlamına gelmez. Ayar, tam aktarım için izin verilen süreden ayrıdır. İkincisini artırmak aynı başlangıç duraklamasını açıklanmamış bırakabilir.
Ayrıca Expect'i hangi HTTP konuşmasının taşıdığını belirleyin. HTTPS hedefine olağan CONNECT ile, web sitesinin yükleme alışverişi TLS'in içindedir; yönlendirici proxy içteki beklenti başlığını öylece incelemez. Araya girme veya düz metin yönlendirme yolu farklıdır.
Beklentiyi kaldırmak bilinçli bir uyumluluk tercihi olabilir, ancak bu, istemcinin erken bir reddi öğrenmeden büyük bir gövde göndermeye başlayabileceği anlamına gelir. Bu davranışı gerçek gereksinimle karşılaştırın. Eski bir proxy için tarihsel bir çözümü, her yüklemeden başlığı kaldırmaya yönelik evrensel bir talimat olarak tanımlamayın.