كيفية إصلاح خطأ تجاوز حجم الكوكيز عن طريق تقسيم الكوكيز
حل لمشكلة تجاوز حجم الكوكيز: تقسيم الكوكي إلى عدة كوكيز أصغر وإعادة بنائها على الجانب الخادم. يعمل هذا الحل بشكل جيد خصوصًا للمنصات الخالية من الخوادم دون الحاجة إلى بنية تحتية إضافية.
حل لمشكلة تجاوز حجم الكوكيز: تقسيم الكوكي إلى عدة كوكيز أصغر وإعادة بنائها على الجانب الخادم. يعمل هذا الحل بشكل جيد خصوصًا للمنصات الخالية من الخوادم دون الحاجة إلى بنية تحتية إضافية.
الخلاصة: عندما يتجاوز حجم الكوكيز حد 4KB في المتصفح، قم بتقسيمه إلى عدة كوكيز أصغر وأعد بنائها على الجانب الخادم. يعمل هذا الحل بشكل جيد خصوصًا للمنصات الخالية من الخوادم دون الحاجة إلى بنية تحتية إضافية.
في معظم Logto SDKs لتطبيقات الويب التقليدية، نقوم بتخزين بيانات الجلسة في كوكيز HTTP فقط لأسباب أمنية. إليك نهجنا:
عندما يقوم SDK بأداء عمليات تتطلب بيانات الجلسة، فإنه:
هذا النهج لا يتطلب تخزينًا خارجيًا ويمكن نشره مباشرة على منصات الخوادم الخالية الشهيرة مثل Vercel دون أي تغييرات في البنية التحتية.
ومع ذلك، عند تنفيذ دعم متعدد المنظمات، واجهنا حداً. لقد نما حجم الكوكيز لدينا إلى ما يتجاوز حد 4KB في المتصفح لأننا كنا بحاجة إلى تخزين:
أدى هذا إلى حدوث الخطأ:
تفرض المتصفحات حدودًا صارمة لحجم الكوكيز، حيث تحد معظمها الكوكيز الفردية إلى 4KB وإجمالي حجم الكوكيز إلى 8KB لكل نطاق.
استخدام تخزين خارجي مثل Redis أو قاعدة بيانات سيستلزم إعداد بنية تحتية إضافية، مما يزيد من التكلفة والتعقيد لمستخدمي SDK. وهذا يتعارض مع هدفنا في توفير حل يناسب المطورين.
بينما قد يكون التخزين في الذاكرة بديلاً، إلا أنه لا يعمل جيدًا في البيئات الخالية من الخوادم حيث تكون الأمثلة مؤقتة والذاكرة لا تُشارك بين الطلبات.
الحل البسيط هو تقسيم الكوكيز الكبيرة إلى أجزاء أصغر. توضح هذه المقالة النهج باستخدام Next.js كمثال:
يوفر تقسيم الكوكيز حلاً أنيقًا سهل التنفيذ ولا يسبب تعطلاً كبيرًا في بنية التطبيق القائمة. بمجرد تقسيم الكوكيز الكبيرة إلى أجزاء أصغر، يمكن للمطورين التغلب على قيود حجم المتصفح دون تغيير نهج إدارة الجلسات الأساسي أو إضافة تبعيات خارجية.