Bir HTTP isteği zamanından önce sonlandırıldığında ne olur?


13

Sanırım tarayıcıma bir URL giriyorum ve tarayıcı HTTP isteğini gönderdi. Uzak HTTP sunucusu isteği kabul eder ve isteği sunmak için uzun bir görev başlatır.

İsteği tamamlanmadan sonlandırırsam (örneğin Esc veya Firefox'ta), istek nasıl kapatılır? Tarayıcı bu iptal talebini sunucuya iletecek mi (sanmıyorum)?

Hayır olduğunu varsayarak, uzun görevi tamamladıktan sonra sunucu sonuçla ne yapacak? Yine de geri gönderiyor mu? Varsa ne olacak? Bilgisayarıma kadar ulaşıyor mu? Yoksa yolda kaybolur mu?

Bu sadece merakım için.

Zaman ayırdığınız için teşekkürler :)


2
Bir wireshark yakalama çalıştırmayı denediniz mi? Bir bilgisayarın ağ üzerinden diğerine ne gönderdiğini görmeyi kolaylaştırır.
racyclist

Yanıtlar:


8

Her şey sunucunun ne yaptığına bağlı. Genellikle, gönderme denenene kadar sonlandırılan isteği "algılamaz". Bu noktada, komut dosyası web sunucusundan bir user_abort iletisi alır (php'de, kullanıcının iptalini göz ardı etmesini söyleyebilirsiniz ignore_user_abort(true);). İstemciye veri göndermeye çalışmadan, sunucunun isteğin iptal edildiğini bilmesi mümkün değildir.

İsteği kapalı TCP bağlantısına göndermeye çalıştığında, olan şey tamamen sunucu yazılımına bağlıdır. Apache şu şekilde çalışır: Gönderilen veriler dinamik bir komut dosyası işlenirken hala devam ediyorsa, komut dosyasına iptal hakkında bilgi verir ve istediği gibi işlemesine izin verir (PHP - varsayılan olarak - sonlandırılır). Komut dosyası yapılırsa veya statik bir dosya isteğiyse, kapalı bağlantıyı yok sayar ve geri döner.


-2

Bence elektrik gibi bir şey düşünülmeli. şarj etmek. bazı bağlantı sona erdiğinde, gönderilen veri bir ücrettir, yalnızca belirli bir aktarım için dinleme soketi olmadığından kaybolur. sadece bir soket varsa, bazı iletişim olur.

Misal:

Vurulduk http://localhostapache2 httpd için. diyelim ki çalışmıyor. Tarayıcı bir soket açar, bağlantı noktası 80'e (varsayılan) bir mesaj gönderir ve herhangi bir yanıt olup olmadığına bakar. Apache çalışmadığı için dinleyici olmadığından, bu ping isteği hiç yanıt almaz. en az 200 ok ya da her türlü el sallamak hiç. ping'e ne olur? http bir şey gönderir: like GET http://localhost 80... etc. bu hatta ne olur? GET http://localhost 80? bu sadece bir ücrettir ve kaybolur.

Bu sadece benim inancım ve daha fazla netlik için önce TCP'ye başvurmalıyız . Ancak o zaman, internet protokolünün ve sonraki http'nin nasıl davrandığını anlayabiliriz. Nihayetinde, erken sonlandırılmış bir http isteği için somut bir tanım yoktur. Bu yüzden erken sonlandırma denir.


1
Şiirsel olsa da, bu kesin değildir ve bunun etkisini dikkate almanın özellikle yararlı bir yolu değildir.
Falcon Momot
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.