Çerezler nedeniyle çevrimiçi Haberler'de kaybedilen bağlantılar: ipuçlarını arayın

kapanış bildirimi

Bu makale İngilizce olarak da mevcuttur. Teknik yardımla tercüme edildi ve yayınlanmadan önce editoryal olarak gözden geçirildi.

Web geliştirmede sadece yeni yazılım yazmakla kalmıyoruz, elbette hata mesajları da alıyoruz. Çoğu durumda aşağıdaki sprintlerden biri için hata düzeltmesini hızlı veya kalıcı olarak planlamanıza yardımcı olabiliriz. Ancak bazı hatalar daha inatçıdır ve sonuçta çok basit bir nedeni vardır. Bugün bu hatadan bahsedelim.

Duyurudan sonra devamını okuyun

Hilko Holweg, Haberler Medien'de bir ön uç geliştiricisidir ve özellikle web performansı konusunda tutkuludur. Ön ucun yanı sıra teknolojiyle ilgili pek çok şeyle de ilgileniyor. Örneğin, C't için Raspberry Pi'yi temel alan çevrimdışı ses tanıma özelliğine sahip bir dijital asistan hakkında bir makale yazdı.

Bir süre kullanıcıların bağlantılarının koptuğuna dair raporlar almaya devam ettik Haber ERR_HTTP2_PROTOCOL_ERROR mesajıyla başarısız oldu. Etkilenen kullanıcıların birkaç ortak noktasının olduğu kısa sürede anlaşıldı: Hepsi tarayıcı olarak Chrome'u kullanıyordu ve web sitemizi düzenli olarak ziyaret ediyordu. Bu hatayı biraz azalttı ama bizim en büyük sorunumuz uzun süre hatayı kendimiz tekrarlayamamamızdı.

Ancak düşünceler devam etti. Kullanıcılar (maalesef bugünlerde) Haberler gibi büyük ölçüde reklamlarla finanse edilen bir hizmette çevrimiçi olduklarında bol miktarda ne alıyorlar? – Kurabiyeler. Etkilenen kullanıcılarla yapılan bir test en azından geçici bir çözüm sağladı: Çerezlerin silinmesi işe yaradı.

Başlangıçta çerezlerin boyutundan şüphelendik ve özellikle büyük çerezlerle test ettik ancak buna rağmen sorunu yeniden oluşturamadık. Ancak daha sonra yazı işleri ekibinden bir meslektaşı da aynı hatayı bildirdi: Hatta bu hatayı düzenli olarak alıyordu. Ondan sorunu düzeltmemize yardım etmesini istedik ve hata tekrarlandığında bize haber verdi. Sonunda sorunu doğrudan gözlemleyebildik.

İle tcpdump TLS ve HTTP2'yi sonlandıran yük dengeleyicide (BigIP) tarayıcıyla aramızdaki ağ trafiğini kaydettik. BigIP'in kendisinin bir “protokol hatası” nedeniyle HTTP2 bağlantısını kestiği ortaya çıktı. Haberler Online, kullanıcının tarayıcısından web sunucumuza doğrudan bağlantının yanı sıra arada çeşitli (ağ) altyapılara da sahip olduğundan, bağlantının koptuğu noktayı ve bu kopmaya zincirin hangi kısmının sebep olduğunu bulmak bizim için çok faydalı oldu.

Duyurudan sonra devamını okuyun

Elde edilen bilgilerle Chrome hata raporlarını analiz ettik. Bir rapora ek olarak, Chrome'un HTTP2 isteğindeki her çerezi ayrı bir Set-Cookie başlığıyla gönderdiğini görebildiğimiz HTTP2 protokolünün bir metni vardı. Bu bize kurabiyelerin boyutu yerine sayısıyla deneme yapma fikrini verdi ve şunu gördük: sorun birçok küçük kurabiyeyle de tekrarlanabiliyordu.

Buradan sonrası kolaylaştı. Yöneticilerimizin yardımıyla BigIP'te izin verilen maksimum başlık sayısını belirleyen bir ayar bulduk. Artık bu limiti çok daha yukarılara taşıdık ve sorun çözüldü. En azından şimdilik, çünkü yeni üst sınıra daha fazla çerez başlığıyla da ulaşılabilir ve hata tekrar meydana gelebilir.

Ancak hatayla ilgili hala bazı ilginç şeyler var. HTTP/1.x'te birden fazla çerez başlığına henüz izin verilmiyordu (bkz. RFC 6265), ancak HTTP/2'de kullanıcı aracısı her çerezi tek bir başlık olarak gönderebilir (bkz. RFC 7540) ve Chrome'un burada yaptığı da tam olarak budur. Bu davranışın bir optimizasyon olduğu açıktır, çünkü tekrarlanan başlıkların iletimi, HPACK başlık sıkıştırması ile HTTP/2'de büyük ölçüde optimize edilebilir (bkz. RFC 7541). Ancak bu yalnızca sürekli değişmeyen başlıklar için işe yarar. Tüm çerezler için büyük bir çerez başlığı, tek bir çerez değiştiğinde bile tamamen yeniden iletilmelidir.

Ne yazık ki Chrome, geliştirici araçlarında bununla ilgili hiçbir şey göstermedi. Burada her zaman yalnızca bir çerez başlığı listelenir; bu da sorun gidermeyi kolaylaştırmaz.

Bunun soruna bir çözüm mü yoksa sadece büyük bir yara bandı mı olduğunu zaman gösterecek. Ancak neden arayışı kesinlikle geliştiricilerin günlük yaşamındaki en ilginç arayışlardan biriydi.


(Ben)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir