Türkçe
  • cookie
  • nextjs
  • serverless

Çerez boyutu aşıldı hatasını çerezleri bölerek nasıl düzeltirsiniz

Çerez boyutu aşıldı hatası için bir çözüm: çerezi daha küçük parçalara bölün ve sunucu tarafında yeniden oluşturun. Bu çözüm, özellikle ek altyapı gerektirmeden sunucusuz platformlar için iyi çalışır.

Sijie
Sijie
Developer

Özet: Çerez boyutunuz 4KB tarayıcı sınırını aştığında, onu daha küçük parçalara bölün ve sunucu tarafında yeniden oluşturun. Bu çözüm, özellikle ek altyapı gerektirmeden sunucusuz platformlar için iyi çalışır.

Logto SDK'larında Çerez Kullanımı

Geleneksel web uygulamaları için çoğu Logto SDK'sında, güvenlik amacıyla oturum verilerini yalnızca HTTP çerezlerinde saklıyoruz. İşte yaklaşımımız:

SDK, oturum verisi gerektiren eylemleri gerçekleştirdiğinde:

  • Simetrik şifreleme kullanarak şifreler
  • Şifreli dizeyi yalnızca HTTP çerezine kaydeder
  • Yalnızca HTTPS iletimini sağlamak için güvenli bayraklar ayarlar

Bu yaklaşım, hiçbir harici depolama gerektirmez ve Vercel gibi popüler sunucusuz platformlara doğrudan ek altyapı değişiklikleri olmadan dağıtılabilir.

Sorun: Çerez boyutu aşıldı hatası

Ancak, çoklu organizasyon desteğini uygularken bir sınıra ulaştık. Çerez boyutumuz, şunları saklamamız gerektiği için 4KB tarayıcı sınırının ötesine geçti:

  • Oturum açma ve diğer oturum verileri
  • Kullanıcı kimlik doğrulaması için ID jetonları
  • Yenileme jetonları
  • Farklı kaynak göstergeleriyle erişim jetonları
  • Bir organizasyon jetonu bileşeni olarak JWT içinde yük, aynı anda birden fazla organizasyonun etkin olabildiği durumda oldukça büyük olabilir

Bu da hata ile sonuçlandı:

Tarayıcılar, çoğu bireysel çerezleri 4KB ile sınırlarken, toplam çerez boyutunu her etki alanı başına 8KB ile sınırlar.

Harici depolama kullanmak hakkında ne dersiniz?

Redis gibi harici depolama veya bir veri tabanı kullanmak ek altyapı kurulumu gerektirir, bu da SDK kullanıcıları için hem maliyeti hem de karmaşıklığı artırır. Bu, geliştirici dostu bir çözüm sunma hedefimize ters düşüyor.

Bellek içi depolama bir alternatif olabilirken, örneklerin uçucu olduğu ve istekler arasında bellek paylaşımının yapılmadığı sunucusuz ortamlar için iyi çalışmaz.

Çözüm: Çerez bölme

Basit bir çözüm, büyük çerezleri daha küçük parçalara bölmektir. Bu makale, Next.js örneği ile yaklaşımı göstermektedir:

1. Oturum verilerini böl

2. Parçaları sakla

3. İstek üzerine yeniden oluştur

Uygulama için en iyi uygulamalar

1. Parça boyutu yönetimi

2. Temiz oturum yönetimi

Toplam çerez boyutunu izleyin:

Sonuç

Çerez bölme, mevcut uygulama mimarisine minimum etki yaparak ve uygulaması kolay bir çözüm sunar. Geliştiriciler, büyük çerezleri daha küçük parçalara ayırarak tarayıcı boyut sınırlamalarını aşabilirler ve bunu yaparken temel oturum yönetimi yaklaşımlarını değiştirmeden veya ek bağımlılıklar eklemeden yapabilirler.