İstek iptali sonrasında HTTP yanıtı


0

Bir sunucuya HTTP isteği gönderirim. Sunucunun uzun süre çalışan istek işleyicisi var ve 10 saniye sonra 200 döndürüyor. Bir isteği iptal edip hemen ikinci isteği gönderirsem, ikinci istek için yalnızca bir yanıt bekliyorum. Ama aynı zamanda ilk, iptal edilen istek için yanıt aldım. Neden olabilir?

İşte istemci 192.168.1.3 ve sunucu xxx10 arasındaki değişimin wireshark günlüğü

görüntü tanımını buraya girin

Paket 21 ilk istekdir.
Paket 57, ilk istek iptal etmedir.
Paket 184 ilk talebe cevaptır. Burada olmamalı! (?)


Bağlantının kapatılmasının istek üzerine sunucu tarafı işlemeyi iptal edeceği garantisi yoktur. HTTPD buna iyi tepki verebilir veya vermeyebilir.
Frank Thomas,

Yanıtlar:


4

TCP bağlantıları çift yönlüdür ve tek bir Fin yalnızca bir yönü kapatır. İstemci tarafında isteğinizi iptal ettiğinizde, bir Fin ve sunucunun TCP yığını Ack'd gönderdiniz, bu da istemciden sunucuya yönünün artık kapalı olduğunu doğrular. Bu nedenle, müşteriniz için şu bağlantıda sunucuya daha fazla veri göndermesi yasa dışı olacaktır. Ancak sunucu hiçbir zaman bir Fin gönderemediğinden, sunucudan istemciye yönü hala açıktır. Bu nedenle, sunucunun bu bağlantıyla ilgili veri göndermeye devam etmesi yasaldır, ki bu: HTTP yanıtı.

Her iki yönü de hemen kapatmaya zorlamak istiyorsanız, bir Fin yerine bir TCP Sıfırlama (Rst) göndermiş olmalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.